如何在Linux(可能还有其他unix)中列出一个组的所有成员?
当前回答
getent group groupname | awk -F: '{print $4}' | tr , '\n'
这有三个部分:
1 - getent group groupname显示“/etc/group”文件中组的行。替代cat /etc/group | grep groupname。
2 - awk只打印用','分隔的单行中的成员。
3 - tr将','替换为新行,并在一行中打印每个用户。
4 -可选:如果用户太多,你也可以使用另一个管道排序。
问候
其他回答
下面是另一个Python一行程序,它考虑了用户的默认组成员(来自/etc/passwd)以及组数据库(/etc/group)
python -c "import grp,pwd; print set(grp.getgrnam('mysupercoolgroup')[3]).union([u[0] for u in pwd.getpwall() if u.pw_gid == grp.getgrnam('mysupercoolgroup')[2]])"
我已经尝试了grep 'sample-group-name' /etc/group,它将根据这里的示例列出您指定的组的所有成员
lid -g groupname | cut -f1 -d'('
再加上grep和tr:
$ grep ^$GROUP /etc/group | grep -o '[^:]*$' | tr ',' '\n'
user1
user2
user3
在UNIX(与GNU/Linux相反)中,有listusers命令。有关listusers,请参阅Solaris手册页。
注意,这个命令是开源家宝项目的一部分。我认为它在GNU/Linux中是缺失的,因为RMS不相信组和权限。: -)