Linux怎么查看具体的用户组包含哪些用户

冬涛姑娘_4213

冬涛姑娘_4213

2026-07-15

392人浏览

原创

/etc/group第四列仅含附加成员,主组用户需从/etc/passwd第四列(gid)反查;完整用户列表须合并主组用户与附加成员并去重。

linux怎么查看具体的用户组包含哪些用户

直接查 /etc/group 文件里的成员字段不完整

很多人以为 /etc/group 第四列(逗号分隔的用户名)就是该组全部用户,其实它只列出“附加成员”,不包含主组用户。比如用户 alice 的主组是 users,那她在 users:x:100:... 这行里不会出现——哪怕 users 是系统最常用的组,它的成员字段也常常为空。

所以仅靠 grep '^users:' /etc/group 看到的只是部分用户,漏掉大量主组归属者。

  • 主组用户必须结合 /etc/passwd 的 GID 字段反查
  • 附加成员才出现在 /etc/group 的第四字段
  • 如果组名含特殊字符或空格,/etc/group 本身已损坏,别信那一行

用 awk + /etc/passwd 查主组用户最可靠

主组用户藏在 /etc/passwd 第四列(GID),只要知道目标组的 GID,就能一次性捞出所有主组归属者。

例如查 sudo 组的主组用户:

gid=$(grep '^sudo:' /etc/group | cut -d: -f3)<br>awk -F: -v target_gid="$gid" '$4 == target_gid {print $1}' /etc/passwd

这个组合不依赖任何外部工具,纯 POSIX 兼容,在最小化系统(如 Alpine、BusyBox)里也能跑通。

linux-performance-analyzer
linux-performance-analyzer

Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。

下载
  • cut -d: -f3 提取 GID 要比 awk -F: '/^sudo:/ {print $3}' 更安全,避免正则误匹配注释行
  • 不要用 cat /etc/passwd | grep ":$gid:" —— 字段边界不明确,可能匹配到 UID 或家目录里的数字
  • 如果 GID 不存在(比如组被删但用户未清理),gid 变量为空,后续 awk 不会输出任何内容,这是预期行为

getent group 能查附加成员但不返回主组用户

getent group sudo 输出类似 sudo:x:27:alice,bob,这和 grep '^sudo:' /etc/group 结果一致,只反映附加成员。它比直接读文件多一层 NSS 抽象,适合 LDAP/SSSD 环境,但依然不解决主组用户缺失问题。

  • 在混合环境(本地 + LDAP)中,getent group 可能返回比 /etc/group 更多的附加成员
  • getent group 默认不显示空组(无附加成员且无主组用户),而 cat /etc/group 会列出所有定义过的组
  • 想确认某组是否存在,用 getent group 组名 比 grep 更准,避免匹配到其他字段里的子串

合并主组 + 附加成员才能得到完整名单

真正完整的用户列表 = 主组用户(来自 /etc/passwd) + 附加成员(来自 /etc/group 或 getent group)。两者必须手动合并去重。

简单合并示例(查 docker 组):

groupname=docker<br>gid=$(getent group "$groupname" | cut -d: -f3)<br>{ awk -F: -v g="$gid" '$4==g {print $1}' /etc/passwd;<br>  getent group "$groupname" 2>/dev/null | cut -d: -f4 | tr ',' '\n'; } | sort -u

注意:sort -u 必不可少——同一个用户可能既是主组又是附加成员(虽然少见,但合法)。

  • 如果 getent group 找不到组,第二行会输出空,不影响第一行结果
  • tr ',' '\n' 处理附加成员字段时,要小心用户名里含逗号的情况(理论上不允许,但手工编辑过文件就可能出错)
  • 脚本里用 $() 捕获 gid 时,记得加引号防止空格或换行注入,不过 GID 本身是纯数字,实际风险低
真实场景里最容易忽略的是:**主组用户永远不在 /etc/group 的成员字段里,而绝大多数用户都是以主组身份存在的**。只扫一眼 /etc/group 就下结论,90% 的情况下会漏掉大部分用户。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3630

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3153

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2213

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5310

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4982

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2993

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2485

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2699

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习