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

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

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

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

答案1

全部用户:

$ getent passwd

所有团体:

$ getent group

具有特定用户的所有组:

$ getent group | grep username

答案2

列出用户及其组:

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

答案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

答案4

用于getent passwd{1000..60000}仅列出手动添加的用户。请参阅:https://linuxize.com/post/how-to-list-users-in-linux/

for user in $(getent passwd {1000..60000} |awk -F: '{print $1}');
do 
    groups $user; 
done

相关内容