/etc/passwd 显示某个组中的用户,但 /etc/group 没有显示

/etc/passwd 显示某个组中的用户,但 /etc/group 没有显示

我想验证用户帐户文件发送者_1是该团体的成员有效发送者

当我查看 /etc/group 时,文件发送者_1不在这里:

valid_senders:x:12345:production_1

我将其理解为“production_1 是 valid_senders 组的唯一成员,其组 ID 为 12345。”

然而:

当我查看 /etc/passwd 时,有效发送者列出文件发送者_1...

filesender_1:x:1515:12345:filesender_1:/local/home/filesender_1:/bin/sh

...所以我知道有效发送者是主要群体文件发送者_1

这是一个令人惊讶的差异吗,还是 /etc/group 仅列出该组为次要的成员是正常的?

答案1

是的,这种差异很正常。我已经见过很多次了,我不再查看/etc/passwd/etc/group文件,而是开始以应有的方式查看组成员身份:getent group <groupname>groups <username>

答案2

是的,主组和补充组之间是有区别的。主组是/etc/passwd用户登录时在 中显示的主要组。对于属于补充组的用户,其用户名将添加到 中的组条目中。/etc/group如果您使用id -a <user>,它将显示主组和补充组。补充组授予对资源的访问权限,但任何新文件都是通过主组创建的。

您可以使用命令更改用户当前活动的主要组newgrp

用户的主组不必同时是次组。它所做的只是减少用户可以加入的次组数量。传统上,用户最多只能加入 32 个次组,但近年来这种情况可能已经改变。

usermod可以在一个命令中设置用户的主要组和补充组。使用像 puppet 这样的配置管理工具也可以做到这一点,而不必担心不同类型的 unix 上需要什么特定命令。

答案3

存在一个名为的程序成员您可以在大多数 Linux 发行版上安装列出组的实际成员,无论它是主要组还是补充组。

通常,当创建用户时未使用 -g 或 --gid 指定组,则默认行为是将其主组设置为用户名,并且此 gid 不会放置在 /etc/group 文件中。因此,用户 joe 创建的文件和目录的所有权为 joe:joe。但您不会在 /etc/group 文件中发现组“joe”。

如果将用户 joe 添加到“学生”组,则运行

getent group students

将在群组用户列表中显示 joe学生

运行程序

members <groupname>

将显示群组的主要成员或补充成员团队名字

答案4

你应该使用 lid -g <group>'

相关内容