首页 > 编程知识 正文

id命令的哪个参数可显示用户账号的UID信息,作为用户标识符

时间:2023-05-03 05:58:50 阅读:254877 作者:251

虽然我们登录Linux主机的时候,输入的是我们的账号,但是其实Linux主机并不会直接认识你的“账号名称”的,它仅认识ID。ID与账号的对应关系在/etc/passwd当中。

每个登录的用户至少都会取得两个ID,一个是用户ID(UserID,简称UID),一个是用户组ID(Group ID,简称GID)。

文件如何判别它的所有者与用户组呢?其实就是利用UID与GID。每一个文件都会有所谓的所有者ID与用户组ID,当我们有要显示文件属性的需求时,系统会根据/etc/passwd与/etc/group的内容,找到UID/GID对应的账号与组名再显示出来。


1. 先查看一下,系统里面有没有一个名为yhk的用户


用户的字段正是yhk本身。

2. 修改一下,将yhk的1000UID该为2000




怎么变成1000了?因为文件只会记录数字而已。因为我们乱改,所以导致1000找不到对应的账号,因此显示数字!

3. 将刚才的UID改回来。


你输入账号密码后,系统怎么处理?

1. 先找寻/etc/passwd 里面是否有你输入的账号,如果没有则跳出,如果有的话则将该账号对应的UID与GID(在/etc/group 中)读出来,另外,该账号的主文件夹与shell 设置也一并读出。

2. 再来则是核对密码表。Linux会进入/etc/shadow 里面找出对应的账号与UID,然后核对一下你刚才输入的密码与里面的密码是否相符。

3. 如果一切ok的话,就进入shell 控管的阶段了。

跟用户账号有关的有两个非常重要的文件,一个是管理用户UID/GID重要参数的/etc/passwd ,一个则是专门管理密码相关数据的/etc/shadow

/etc/passwd 文件结构

每一行都代表一个账号,有几行就代表有几个账号在你的系统中。不过需要特别留意的是,里面有很多账号本来就是系统正常运行所必须要的,我们可以简称它为系统账号,例如bin, daemon, adm, nobody 等,这些账号请不要随意删掉。


每一行使用“:”分隔开,共有七个字段,分别是:

1. 账号名称

就是账号,用来对应UID 的。例如root 的UID对应就是0(第三字段)

2. 密码

早期UNIX系统的密码就是放在这字段上。但是因为这个文件的特性是所有的程序都能够读取,这样一来很容易造成密码数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow 中了,所以这里你会看到一个“x”.

3. UID

这个就是用户标识符。通常Linux对于UID有几个限制。0(系统管理员),1~499(系统账号),500~65535(可登陆账号)

4. GID

这个与/etc/group 有关。其实/etc/group 与 /etc/passwd 差不多,只是它是用来规定组名与GID的对应而已。

5. 用户信息说明列

这个字段基本上并没有什么重要用途,只是用来解释这个账号的意义而已。

6. 主文件夹

这是用户的主文件夹。

7. shell

当用户登录系统后就会取得一个Shell来与系统的内核通信以进行用户的操作任务。那为何默认shell会使用bash呢?就是这个字段指定的。

/etc/shadow 文件结构

我们知道很多程序的运行都与权限有关,而权限与UID/GID 有关。因此各程序当然需要读取/etc/passwd 来了解不同账号的权限。因此/etc/passwd 的权限需要设置为-rw-r--r--这样的情况。后来发展出将密码移动到/etc/shadow 这个文件分隔开来的技术,而且还加入很多的密码限制参数在/etc/shaow 里面。


共有9个字段:

1. 账号名称

由于密码也需要与账号对应。因此,这个文件的第一列就是账号,必须要与/etc/passwd 相同才行。

2. 密码

这个字段内的数据才是真正的密码,而且是经过编码的密码(加密)。这个文件的默认权限是“-rw-------”或者是“-r--------”,即只有root才可以读写。你得随时注意,不要不小心改动了这个文件的权限。

/etc/group 文件结构

这个文件就是记录GID与组名的对应。


这个文件每一行代表一个用户组。共分4列

1. 用户组名称

2. 用户组密码

通常不需要设置,这个设置通常是给“用户组管理员”使用的,目前很少有这个机会设置用户组管理员。

3. GID

就是用户组ID。我们/etc/passwd 第四个字段使用的GID对应的用户组名就是由这里对应出来的。

4. 此用户组支持的账号名称

我们知道一个账号可以加入多个用户组,那某个账号想要加入此用户组时,将该账号填入这个字段即可。举例来说,如果我想让 dmtsai 也加入 root 这个用户组,那么在第一行的最后面加上“,dmtsai”,注意不要有空格,使其成为“root:x:0:root,dmstai”就可以了。

有效用户组(effective group)与初始用户组(initial group)

每个用户在它的/etc/passwd 里面的第四列GID就是所谓的“初始用户组”。也就是说,当用户登录系统,立刻就拥有这个用户组的相关权限。

新文件的组要检查一下当时的有效用户组了。












版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。