所以像
showusers
这样的列表会列出所有用户,而showgroups -u thisuser
将显示其中包含thisuser
的所有组。#1 楼
所有用户:$ getent passwd
所有组:
$ getent group
具有特定用户的所有组:
$ getent group | grep username
评论
我发现有一个名为语音分配器的用户,该用户属于组音频(基于组语音分配器)。但是它没有在getent group命令下列出!问题是什么?
– PHP学习者
2015年9月15日,下午3:07
@PHPLearner如果还有其他问题,请发表问题,而不发表评论。
–EEAA
2015年9月15日,下午3:08
+1,因为这还会列出在常规/ etc / passwd和/ etc / group文件中找不到的用户/组,即当系统配置为使用NIS和LDAP等中央目录或任何其他替代用户/组数据库时,只要支持用户/组枚举。
– HBruijn
16-11-30在11:57
如果关闭了枚举,这将不会返回ldap或sssd配置中的所有用户和组。
–詹斯·蒂默曼(Jens Timmerman)
18-3-21在13:46
#2 楼
列出用户及其组:for user in $(awk -F: '{print }' /etc/passwd); do groups $user; done
列出用户及其组:
cat /etc/group | awk -F: '{print , , }' | while read group gid members; do
members=$members,$(awk -F: "$4 == $gid {print \",\" $1}" /etc/passwd);
echo "$group: $members" | sed 's/,,*/ /g';
done
评论
尽管这可能行得通,但看起来似乎有点太复杂了,不是这样,当有非常好的简单的单发命令来执行此操作时?
–EEAA
2012年1月31日下午4:41
它肯定不会在集中式存储库中保存任何内容。那绝对是您想要看到的信息。
–麦哲伦
2012年1月31日23:50
优秀非常有帮助,最好提及它们是单独的命令。
–Mian Asbat Ahmad
17年2月13日在13:30
#3 楼
如果您不关心LDAP或NIS之类的远程用户,以一种简单的方式列出用户及其关联的组:
cut -d: -f1 /etc/passwd | xargs groups
输出;
root : root
myuser : root www-data fuse
anotheruser : anotheruser cdrom floppy audio dip video plugdev scanner bluetooth netdev
评论
这与Chang的回答有相同的问题,因为它忽略了源于LDAP,NIS等数据库的用户/组。
– MadHatter
17-10-19在6:25
但是,这将以非常清晰的格式非常整洁地输出信息,因此仍然是有用的第一步。关于/ etc / group和/ etc / passwd的语法,这有助于使我记忆犹新!
–克里斯·伍兹(Chris Woods)
17年11月22日在21:55
#4 楼
列出所有用户cut -d':' -f 1 /etc/passwd
或
awk -F ':' '{print }' /etc/passwd
cat / etc / passwd显示所有用户(并且一堆其他的东西),cut -d':'-f 1是一种简单的方法,用':'作为分隔符来分割每行并仅提取第一个字段(用户)。与awk版本几乎相同。
列出所有组
cut -d':' -f 1 /etc/group
或
awk -F ':' '{print }' /etc/group
猜猜是什么,非常类似于列出用户。只需解析/ etc / group即可。
compgen是另一种有趣的方法,也许更接近OP的需求。不过不确定兼容性问题。
compgen -u
compgen -g
评论
嗨,艾略特·贝利(Elliot Baily),欢迎来到服务器故障!请注意,这个问题已有5年以上的历史,并且已经有正确的答案。还要注意,仅当用户存储在/ etc / passwd中时,您的解决方案才有效。接受的答案也适用于其他用户数据库(例如NIS或LDAP)。如果您想回答旧问题(这很好!),则可能需要查看未回答问题的列表-很多问题在寻找爱情!
– marcelm
17年9月24日在19:25
#5 楼
使用getent passwd{1000..60000}
仅列出手动添加的用户。请参阅:https://linuxize.com/post/how-to-list-users-in-linux/ for user in $(getent passwd {1000..60000} |awk -F: '{print }');
do
groups $user;
done
#6 楼
对于debiancat /etc/passwd # show all users
cat /etc/group # show all groups
cat /etc/passwd | grep group # show all users with specified group
评论
与已经接受的相反,它不会列出源自远程用户数据库(例如LDAP,NIS等)的用户/组。
– HBruijn
16-11-30在11:38
#7 楼
像这样:sudo cat /etc/gshadow |grep group
sudo cat /etc/gshadow |grep username
评论
不。/etc/gshadow不包含组成员(/ etc / group包含),并且4.5年前接受的答案无论如何都更为通用,因为它还可以处理远程组。
– Sven
16年9月2日在20:33
#8 楼
使用此命令可以获取该特定组中的所有组和用户。grep '
> ' /etc/group
评论
没有这样的命令。您需要自己编写脚本。猫/ etc / passwd
怎么样