如何列出群组成员?

如何在Linux中查看组的所有成员?

3个回答

使用以下命令:
getent group groupname

或者

getent group groupname | awk -F: '{print $4}' |  tr "," " "

1要添加组,将用户添加到组中,更改文件夹的权限为组,并获取组的所有成员,您需要分别运行以下命令:addgroup programmers adduser donato programmers chown -R root:programmers idea-IU-141.1010.3 getent group programmers - Donato
chmod -R g+w idea-IU-141.1010.3 - Donato
有趣的发现,“getent groups”(没有指定任何组)和“cat /etc/group”在我的系统上都会给出完全相同的输出。 - okolnost
这个答案并不完整。members <group>可能更符合OP的需求。这里解释了区别链接 - RichEarle
我不确定这对非标准账户是否有效。请尝试以下两个示例:groups root && getent group rootgroups lxd && getent group users。有人能解释一下为什么在上述情况下,root 用户和 lxd 用户(需要安装 LXD/LXC)在 groups 中都没有列为 root 组和 users 组的成员吗?然而 groups pulse && getent group audio 的结果符合预期,pulse 用户在两个命令的输出中都列为 audio 组的成员。 - undefined
除了我上面的评论之外,你会发现在Ubuntu 22 LTS上,getent group groupnamecompgen -u | xargs -I {} sh -c 'groups {}'存在以下组的不匹配:_audio,lp,nogroup,plugdev,users。对于这种行为有解释吗? - undefined

你可以做

members YOUR_GROUP_NAME

它将列出群组中的所有用户YOUR_GROUP_NAME

如果它不是默认安装的:

sudo apt-get install members

1你是在哪里找到这样的命令的? - Jakuje
10你可能需要安装它 sudo apt-get install members - Ben Holland
会员默认安装在Ubuntu 14.04.5中。 - Janek Bogucki
2在20.04桌面LTS版本中,默认情况下并未安装该软件,即使成功安装了smb和cif-utils。 - Marcelo Scofano Diniz

另一种检查组中所有成员的方法是通过检查列出所有组及其成员的/etc/group文件。
示例:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,nikhil
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:nikhil
floppy:x:25:
tape:x:26:
sudo:x:27:nikhil
audio:x:29:pulse

第一个字符串(由冒号分隔)指定了组名,最后一个字符串指定了添加到该组的用户。