如何列出 Linux 中的所有组?

Linux 组是用户的集合。 它们旨在轻松地为一组用户提供特权。 在本教程中,我们将研究列出 Linux 中所有组的各种方法。

目录

列出 Linux 中所有组的 2 种方法

  1. /etc/组文件
  2. 获取命令

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:
...
图 6

如果您正在寻找特定组,请使用 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:
...
图 7

让我们看一些列出 Linux 中所有组的更多示例。

Linux 列出所有组名

我们可以使用 cut 命令只打印组名。 当我们在 shell 脚本中寻找特定的组名时,这很有用。

root@localhost:~# cut -d: -f1 /etc/group
root
daemon
bin
sys
adm
tty
...
图 8图 8

我们也可以将 cut 命令与 getent 命令一起使用。

root@localhost:~# getent group | cut -d: -f1
root
daemon
bin
sys
adm
tty
disk
...
图 9图 9

cut 命令使用冒号 (:) 分隔符分割每一行。 然后使用 -f1 选项选择第一个字段,即组名。

按字母顺序列出所有组名

上述命令输出可以传递给 sort 命令以自然排序顺序打印输出。

root@localhost:~# getent group | cut -d: -f1 | sort
adm
audio
backup
bin
cdrom
crontab
daemon
...
图 10图 10

所有 Linux 组的计数

如果您对 linux 组的计数感兴趣,请使用以下命令。

root@localhost:~# cat /etc/group | grep -c ""
68
root@localhost:~# getent group | grep -c ""
68
root@localhost:~#
图 11图 11

列出用户的所有组

我们可以使用 groups 命令来获取用户的所有组。

root@localhost:~# groups journaldev
journaldev : journaldev sudo test_users test_users_pwd
root@localhost:~# 

root@localhost:~# groups root
root : root
root@localhost:~#
图 12图 12

列出当前用户的组

如果您在没有任何用户输入的情况下运行 groups 命令,它将打印当前用户的组。

root@localhost:~# groups
root
root@localhost:~# su - journaldev
journaldev@localhost:~$ groups
journaldev sudo test_users test_users_pwd
journaldev@localhost:~$ 
图 13图 13

列出用户组和组 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:~# 
图 14图 14

列出组的所有用户

我们可以使用 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:~# 
图 15图 15

结论

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

参考