/etc/passwd 显示组中的用户,但 /etc/group 不显示

Tho*_*day 10 linux groups passwd

我想验证用户帐户filesender_1是否是valid_senders组的成员

当我查看 /etc/group 时,filesender_1不存在:

valid_senders:x:12345:production_1
Run Code Online (Sandbox Code Playgroud)

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

然而:

当我查看 /etc/passwd 时,valid_senders的组 ID列在filesender_1 ...

filesender_1:x:1515:12345:filesender_1:/local/home/filesender_1:/bin/sh
Run Code Online (Sandbox Code Playgroud)

......所以我知道valid_senders是主要组filesender_1

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

Joh*_*ohn 13

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

  • 这_不是_问题的解决方案......它实际上证明了差异。getent 组 &lt;groupname&gt; 不列出 _primary_ 组是 groupname 的用户,只列出那些作为补充组添加到 groupname 的用户。 (4认同)
  • 这没有显示正确的结果...@isd 的答案更好! (2认同)

lsd*_*lsd 13

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

您可以使用该newgrp命令更改当前处于活动状态的主要组的用户。

用户不必将主要组也作为次要组。它所能做的就是减少用户可以加入的次要组的数量。传统上,用户仅限于 32 个次要组,但近年来可能发生了变化。

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