阅读:0

Linux /etc/group文件解析(超详细)

这个文件是记录组 ID(GID) 和组名的对应文件。etc/passwd 文件的第四个字段记录的是每个用户的初始组的 ID,那么这个 GID 的组名到底是什么呢?就要从 /etc/group 文件中查找。这个文件的内容如下:

[root@localhost ~]#vi /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
…省略部分输出…
lamp:x:502:

我们手工添加的用户 lamp 也会默认生成一个 lamp 用户组,GID 是 502,作为 lamp 用户的初始组。这个文件用":"作为分隔符,划分为 4 个字段。我们以 root 行为例子讲解每个字段的具体含义。

组名

第一个字段是组名字段,也就是用户组的名称字段。

组密码标志

第二个字段是组密码标志字段。和 /etc/passwd 文件一样,这里的"x"仅仅是密码标识,真正的加密之后的组密码保存在 /etc/gshadow 文件中。

不过,用户设置密码是为了验证用户的身份,但是用户组设置密码是用来做什么的呢?用户组密码主要是用来指定组管理员的,由于系统中的账号可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。

组ID (GID)

第三个字段是用户组的 ID,和 UID 一样,Linux 系统是通过 GID 来区别不同的用户组的,组名只是为了便于管理员识别。所以,在 /etc/group 文件中可以查看对应的组名和GID。

组中的用户

第四个字段表示的就是这个用户组中到底包含了哪些用户。需要注意的是,如果该用户组是这个用户的初始组,则该用户不会写入这个字段。也就是说,写入这个字段的用户是这个用户组的附加用户。比如 lamp 组就是这样写的"lamp:x:502",并没有在第四个字段中写入 lamp 用户,因为 lamp 组是 lamp 用户的初始组。如果要查询这些用户的初始组,则需要先到 /etc/passwd 文件中查看 GID(第四个字段),然后到 /etc/group 文件中比对组名。

每个用户都可以加入多个附加组,但是只能属于一个个初始组。所以我们在实际工作中,如果需要把用户加入其他组,则需要添加附加组。一般情况下,用户的初始组就是在建立用户的同时建立的和用户名相同的组。

注意,/etc/passwd、/etc/shadow、/etc/group 之间的关系为:先在 /etc/group 文件中查询用户组的 GID 和组名;然后在 /etc/passwd 文件中查找该 GID 是哪个用户的初始组,同时提取这个用户的用户名和 UID;最后通过 UID 到 /etc/shadow 文件中提取和这个用户相匹配的密码。