Linux 组是用户的集合。 它们旨在轻松地为一组用户提供特权。 在本教程中,我们将研究列出 Linux 中所有组的各种方法。
目录
列出 Linux 中所有组的 2 种方法
- /etc/组文件
- 获取命令
1. /etc/组文件
/etc/group 文件包含所有本地组。 因此,我们可以打开此文件并查看所有组。
root@localhost:~# cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: ...
如果您正在寻找特定组,请使用 grep 命令 过滤掉它。
root@localhost:~# cat /etc/group | grep sudo sudo:x:27:journaldev,test root@localhost:~#
2. getent 命令
Linux 获得性 命令从名称服务切换库支持的数据库中获取条目。 我们可以使用它从组数据库中获取所有组信息。
root@localhost:~# getent group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog tty:x:5: ...
让我们看一些列出 Linux 中所有组的更多示例。
Linux 列出所有组名
我们可以使用 cut 命令只打印组名。 当我们在 shell 脚本中寻找特定的组名时,这很有用。
root@localhost:~# cut -d: -f1 /etc/group root daemon bin sys adm tty ...

我们也可以将 cut 命令与 getent 命令一起使用。
root@localhost:~# getent group | cut -d: -f1 root daemon bin sys adm tty disk ...

cut 命令使用冒号 (:) 分隔符分割每一行。 然后使用 -f1 选项选择第一个字段,即组名。
按字母顺序列出所有组名
上述命令输出可以传递给 sort 命令以自然排序顺序打印输出。
root@localhost:~# getent group | cut -d: -f1 | sort adm audio backup bin cdrom crontab daemon ...

所有 Linux 组的计数
如果您对 linux 组的计数感兴趣,请使用以下命令。
root@localhost:~# cat /etc/group | grep -c "" 68 root@localhost:~# getent group | grep -c "" 68 root@localhost:~#

列出用户的所有组
我们可以使用 groups 命令来获取用户的所有组。
root@localhost:~# groups journaldev journaldev : journaldev sudo test_users test_users_pwd root@localhost:~# root@localhost:~# groups root root : root root@localhost:~#

列出当前用户的组
如果您在没有任何用户输入的情况下运行 groups 命令,它将打印当前用户的组。
root@localhost:~# groups root root@localhost:~# su - journaldev journaldev@localhost:~$ groups journaldev sudo test_users test_users_pwd journaldev@localhost:~$

列出用户组和组 ID
我们可以使用 id 命令来打印用户信息。 此命令列出所有组及其组 ID。
root@localhost:~# id journaldev uid=1002(journaldev) gid=1003(journaldev) groups=1003(journaldev),27(sudo),1004(test_users),1007(test_users_pwd) root@localhost:~# root@localhost:~# id root uid=0(root) gid=0(root) groups=0(root) root@localhost:~#

列出组的所有用户
我们可以使用 getent 命令或 /etc/groups 文件来获取属于某个组的所有用户。
root@localhost:~# getent group sudo sudo:x:27:journaldev,test root@localhost:~# root@localhost:~# getent group sudo | cut -d: -f4 journaldev,test root@localhost:~#

结论
getent 命令和 /etc/group 文件可用于获取所有 Linux 组的详细信息。 我们可以将它们与 cut 和 sort 命令一起使用,以更好地呈现输出。