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

Ste*_*ins 85 linux ssh centos users groups

我知道我有现有的组和用户,但我不确定他们的关联。是否有可用于列出所有用户或所有组的 shell 命令和用于列出指定用户/组的所有组/用户的命令?

因此,类似showusers会列出所有用户,并showgroups -u thisuser显示其中的所有组thisuser

EEA*_*EAA 115

全部用户:

$ getent passwd
Run Code Online (Sandbox Code Playgroud)

所有组:

$ getent group
Run Code Online (Sandbox Code Playgroud)

具有特定用户的所有组:

$ getent group | grep username
Run Code Online (Sandbox Code Playgroud)

  • @PHPLearner 如果您还有其他问题,请[post a question](http://serverfault.com/questions/ask),而不是评论。 (4认同)

小智 22

列出用户及其组:

for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done
Run Code Online (Sandbox Code Playgroud)

列出组及其用户:

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
Run Code Online (Sandbox Code Playgroud)

  • 虽然这可能可行,但似乎有点过于复杂,不是吗,因为有非常好的简单的一次性命令可以做到这一点? (2认同)

Fre*_*uss 5

如果您不关心 LDAP 或 NIS 等远程用户,请以简单的方式列出用户及其关联的组:

cut -d: -f1 /etc/passwd | xargs groups
Run Code Online (Sandbox Code Playgroud)

输出;

root : root
myuser : root www-data fuse 
anotheruser : anotheruser   cdrom floppy audio dip video plugdev scanner bluetooth netdev
Run Code Online (Sandbox Code Playgroud)

  • 这与 Chang 的答案有同样的问题,因为它忽略了源自 LDAP、NIS 等数据库的用户/组。 (2认同)