5

Linux 中查询某个组中所有用户的三种方法

 1 year ago
source link: https://www.51cto.com/article/721508.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux 中查询某个组中所有用户的三种方法

作者:刘光录 2022-10-28 11:07:03
在Linux中可以有多个组和用户,一个组中包含多个用户,一个用户也可以是多个组的成员。我们可以查询某个用户所属的组,也可以查询组中所有的用户。
060870803f2880ef83079599e3168e4093be27.jpg

我们之前介绍过如何在 Linux 中列出所有用户,今天我们分享的内容与之类似,如何在列出某个组中的所有用户。

大家应该都知道组和用户的概念,在Linux中可以有多个组和用户,一个组中包含多个用户,一个用户也可以是多个组的成员。我们可以查询某个用户所属的组,也可以查询组中所有的用户。

以下为查找组中所有用户的三种方法。

1、利用 /etc/group 文件列出组中的用户

Linux 系统中组的信息包含在 /etc/group 文件中,所以我们可以通过查看此文件中的内容来查看组成员的信息。

通常,该文件有如下格式的内容:

adm:x:4:syslog,gliu

以下为各字段的说明:

  • adm 为组名称;
  • x 代表密码字段(当然你不会看到明文的密码);
  • 4 是组的ID即GID;
  • syslog 和 gliu 是属于组 adm 中的用户。

如果你觉着手动查看文件内容比较麻烦,可以 借助 grep 和 cut 命令来搜索文件内容:

grep '^group_name:.*$' /etc/group | cut -d: -f4

上面的命令查找以指定组名称开头的所有行,然后 cut 命令提取以冒号 : 分割的第四列,其结果就是组成员的名称:

grep '^adm:.*$' /etc/group | cut -d: -f4
syslog,gliu

2、使用 getent 命令列出Linux中的组成员

getent 是个多用途的命令,用于查询 /etc 目录中的数据库文件,因此我们可以使用它来查询 /etc/group 文件,并按以下方式获取指定组的用户:

getent group group_name

这样将会现实与组名称匹配的行,即组的成员:

getent group sudo
sudo:x:27:gliu

3,使用 members 命令列出组中的用户

有一个很简洁的命令行工具即 members 命令,可以列出特定组中所有成员,这个操作过程也很简单。

不过通常情况下,members 命令不会默认安装在所有系统中,因此我们需要手动安装: 在基于 Debian/Ubuntu 的系统上,可以使用以下命令进行安装:

sudo apt install members

如果在 Ubuntu 中找不到该命令,则需要启用 universe 存储库并重试。关于 Ubuntu 中存储库的启用禁用,可参考:

​https://itsfoss.com/ubuntu-repositories/​

命令安装完成后,就可以按如下方式运行:

members group_name

比如,要查看哪些用户具有 sudo 访问权限,可以按如下方式使用 members 命令:

members sudo

这样将会列出 sudo 组中所有的用户:

$ members sudo
gliu

以上就是本次分享的列出组中所有用户的三种方法。

责任编辑:庞桂玉 来源: TIAP

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK