linux用户的id分2种:用户id(user id,简称uid)和组id(group id,简称gid),这与文件有拥有者和拥有群组两种属性相对应。每个文件都有自己的拥有者id和群组id,当显示文件属性时,系统会根据“/etc/passwd”和“/etc/group”文件中的内容,分别找到uid和gid对应的用户名和群组名,然后显示出来。
本教程操作环境:linux7.3系统、dell g3电脑。
登陆 linux 系统时,虽然输入的是自己的用户名和密码,但其实 linux 并不认识你的用户名称,它只认识用户名对应的 id 号(也就是一串数字)。linux 系统将所有用户的名称与 id 的对应关系都存储在 /etc/passwd 文件中。
说白了,用户名并无实际作用,仅是为了方便用户的记忆而已。
要论证 "linux系统不认识用户名" 也很简单,在前面章节,我们曾经在网络上下载过 ".tar.gz" 或 ".tar.bz2" 格式的文件,在解压缩之后的文件中,你会发现文件拥有者的属性显示的是一串数字,这很正常,就是因为系统只认识代表你身份的 id,这串数字就是用户的 id(uid)号。
linux 系统中,每个用户的 id 细分为 2 种,分别是用户 id(user id,简称 uid)和组 id(group id,简称 gid),这与文件有拥有者和拥有群组两种属性相对应(如图 1 所示)。
图 1 文件的拥有者和群组属性
从图 1 中可以看到,该文件的拥有者是超级管理员 root,拥有群组也是 root。有人可能会问,既然 linux 系统不认识用户名,文件是如何判别它的拥有者名称和群组名称的呢?
每个文件都有自己的拥有者 id 和群组 id,当显示文件属性时,系统会根据 /etc/passwd 和 /etc/group 文件中的内容,分别找到 uid 和 gid 对应的用户名和群组名,然后显示出来。
/etc/passwd 文件和 /etc/group 文件,后续文章会做详细讲解,这里只需要知道,在 /etc/passwd 文件中,利用 uid 可以找到对应的用户名;在 /etc/group 文件中,利用 gid 可以找到对应的群组名。
做个小实验,笔者所用的 linux 系统中,常用的有两个账户,分别为 root 超级管理员账户和 c.biancheng.net 普通账户,我们先使用 root 账号登陆并 vim /etc/passwd,在该文件中找到 c.biancheng.net 账户并将其 uid 随意改一个数字,这时当你查看普通账户拥有的文件时,你会发现所有文件的拥有者不再是 c.biancheng.net,而是数字。
具体执行过程如下所示:
#查看系统中是否存在c.biancheng.net这个用户 [root@livecd ~]#grep 'c.biancheng.net' /etc/passwd c.biancheng.net:x:500:500:c.biancheng.net:/home/centoslive:/bin/bash [root@livecd ~]#ll -d /home/centoslive drwx------. 23 c.biancheng.net centoslive 4096 apr 9 09:37 /home/centoslive [root@livecd ~]#vim /etc.passwd #修改c.biancheng.net账户中的uid(第一个 500)为 2000 [root@livecd ~]#ll -d /home/centoslive drwx------. 23 500 centoslive 4096 apr 9 09:37 /home/centoslive #可以看到,之前的 c.biancheng.net 变为了 500,因为修改了uid,导致 500 找不到对应的账号,因此显示数字 #记得最后将其再手动改正过来 [root@livecd ~]#vim /etc.passwd #修改c.biancheng.net账户中的uid从 2000 改为 500
由于 c.biancheng.net 账户的 uid 已经改为 2000,但其 home 目录却记录的是 500,会导致此用户再次登录时无法进入自己的home目录。
注意,本节为了说明 id 和用户名的对应关系,所以才将 /etc/passwd 文件中用户的 uid 做了更改。此操作很可能会导致某些程序无法进行,因此 /etc/passwd 文件不能随意修改。
相关推荐:《linux视频教程》
以上就是linux用户的id分几种的详细内容,更多请关注其它相关文章!