/etc/group 文件在Linux系统中用于存储用户组信息。用户组的全部信息都存放在这个文件中。这个文件时记录ID(GID)和组名相对应的文件。etc/passwd 文件中每行用户信息的第四个字段记录的是用户的初始组 ID,此 GID 的组名就要从 /etc/group 文件中查找。
/etc/group 文件的内容可以通过 Vim 看到:
[root@localhost ~]#vim /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
lamp:x:502:
可以看出此用户组的GID为502,目前它只是lamp用户的初始组。该文件的每一行代表一个用户组,并包含三个冒号(:)分隔的字段。分4个字段,每个字段有对应的意思,组名:密码:GID:该用户组的用户列表。下面是该文件的一个示例行:
root:x:0:
组名也是用户组的名称,可以由字母或者数字组成,同 /etc/passwd 中的用户名一样,组名也具有唯一性。组密码和 /etc/passwd一样,“x”是密码标识,真正加密后的组密码默认存在 /etc/gshadow 文件中。
用户设置密码主要是为验证用户身份,用户组的密码主要用于指定组的管理员,系统中账号较多,root用户可能没时间进行用户组调整,可以给用户组指定管理员,当用户需要加入或者退出某用户组,也可以由管理员替代Root进行管理。这项功能当前比较少用,比较少设置组密码。如果是需要赋予某个用户调整用户组的权限,还可以用sudo命令实现。
组就是用户群组的ID号,Linux 系统通过GID区分用户组,和用户名一样组名也是为了便于管理员区别记忆。组中的用户,这个字段列出每个群组包含所有用户。如果该用户组是初始组,这个用户不会被写入字段,这个字段显示用户都是用户组的附加用户。
比如:lamp 组的组信息为 "lamp:x:502:",第四个字段没有写入 lamp 用户,lamp 组是 lamp 用户的初始组。如果要查询这些用户的初始组,则需要先到 /etc/passwd 文件中查看 GID(第四个字段),然后到 /etc/group 文件中比对组名。每个用户都可以加入多个附加组。但是只能属于一个初始组。实际应用中,如果要把用户加入其他组,需以附加组形式添加。
用户组名(root)这是用户组的名称。密码字段(x)在早期的Unix系统中,这个字段用于存储用户组密码的位置,但现代系统中通常使用x代表密码已经被弃用。用户组标识号(0)这是用户组的唯一数字ID。用户列表(空)这个字段列出了属于这个组的用户。在这个例子中,root用户组没有包含任何其他用户。
解析这个文件的实际代码示例可能会使用Python或其他编程语言读取文件并解析每一行。以下是一个Python脚本的简单示例,它读取/etc/group文件并打印出每个用户组的名称和标识号:
with open('/etc/group', 'r') as f:
for line in f:
group_info = line.split(':')
print(f"Group Name: {group_info[0]}, Group ID: {group_info[2]}")
这个脚本打开/etc/group文件,逐行读取内容,使用冒号分隔每个字段,然后打印出组名和组ID。
以上就是华纳云关于Linux /etc/group的文件解析步骤分享,了解了/etc/passwd、/etc/shadow、/etc/group,现在/etc/group中查询到用户组名和GID,然后在/etc/passwd文件中找出GID在哪个用户初始组,同时提取到用户名和UID,通过UID到/etc/shadow文件中提取和用户相匹配的密码。