如何列出Linux中的所有组?

时间:2020-02-23 14:39:51  来源:igfitidea点击:

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

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

  • /etc/group文件
  • getent命令

1./etc/group文件

/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:
...

Linux列出所有组/etc/group文件

如果要查找特定的组,请使用grep命令将其过滤掉。

root@localhost:~# cat /etc/group | grep sudo
sudo:x:27:theitroad,test
root@localhost:~#

2. getent命令

Linux getent命令从名称服务交换机库支持的数据库中获取条目。
我们可以使用它从组数据库中获取所有组信息。

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
...

Linux打印所有组名getent和cut命令

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 theitroad
theitroad : theitroad sudo test_users test_users_pwd
root@localhost:~# 

root@localhost:~# groups root
root : root
root@localhost:~#

当前用户的列表组

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

root@localhost:~# groups
root
root@localhost:~# su - theitroad
theitroad@localhost:~$groups
theitroad sudo test_users test_users_pwd
theitroad@localhost:~$

列出用户组以及组ID

我们可以使用id命令来打印用户信息。
此命令列出所有组及其组ID。

root@localhost:~# id theitroad
uid=1002(theitroad) gid=1003(theitroad) groups=1003(theitroad),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:theitroad,test
root@localhost:~# 
root@localhost:~# getent group sudo | cut -d: -f4
theitroad,test
root@localhost:~#