我想验证用户帐户文件发送者_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>'