显示所有用户及其群组/反之亦然

我知道我有现有的用户,但我不确定他们的联系。 有没有可用于列出所有用户或所有组的shell命令以及列出指定用户/组的所有组/用户的命令?

所以像showusers这样的东西会列出所有的用户,而showgroups -u thisuser这个用户会显示所有拥有这个用户的组。

全部用户:

 $ getent passwd 

所有人群:

 $ getent group 

具有特定用户的所有组:

 $ getent group | grep username 
 for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd); echo "$group: $members" | sed 's/,,*/ /g'; done 

列出所有用户

 cut -d':' -f 1 /etc/passwd 

要么

 awk -F ':' '{print $1}' /etc/passwd 

虽然cat / etc / passwd显示了所有的用户(以及其他一些东西),但是cut -d':'-f 1是一种简单的方法,用':'分隔每一行作为分隔符,只提取第一个字段)。 几乎与awk版本相同。

列出所有组

 cut -d':' -f 1 /etc/group 

要么

 awk -F ':' '{print $1}' /etc/group 

猜猜是什么,非常类似于列出用户。 只需parsing/ etc / group

另一个有趣的方式,可能更接近OP所要求的,就是compgen 。 不知道有关兼容性问题。

 compgen -u compgen -g 

为debian

 cat /etc/passwd # show all users cat /etc/group # show all groups cat /etc/passwd | grep group # show all users with specified group 

如果您不关心远程用户(如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 

喜欢这个:

 sudo cat /etc/gshadow |grep group sudo cat /etc/gshadow |grep username 

使用此命令获取该特定组中的所有组和用户。

 grep ' > ' /etc/group