Shell 脚本显示 /etc/group

Shell 脚本显示 /etc/group

我想编写一个 shell 脚本,显示系统的用户和组/etc/passwd-/etc/group对于每个用户,我想显示用户名、UID 以及该用户所属的所有组。

我尝试了以下操作:

cat /etc/passwd /etc/group

但输出结果却乱七八糟。有人能帮我写一下这个脚本吗?

答案1

不要重新发明轮子。该id命令可以做到这一点:

$ id foobar
uid=1000(foobar) gid=1000(foobar) groups=1000(foobar),4(adm),20(dialout),24(cdrom)

替换foobar为您所需的用户名。

检查man id以获得更多想法。

答案2

获取所有条目的所有组/etc/passwd

for user in $(getent passwd| cut -d: -f1); do groups $user; done

解释

  • getent passwd/etc/passwd:以通常的格式列出所有行

    guest-ZlneMD:x:119:130:Guest,,,:/tmp/guest-ZlneMD:/bin/bash
    
  • cut -d: -f1:删除除第一个字段之外的所有字段(字段以 分隔:),
    结果是所有帐户名称的列表,按 UID 排序
  • 现在user被逐一赋予了所有这些值
  • groups $user获取每个值并显示用户名和该帐户所属的所有组。

    guest-ZlneMD : guest-ZlneMD
    

相关内容