groups 的作用
groups 列出一个用户所属的主组与全部附加组,等价于 id -Gn:不带参数看当前会话身份,带用户名看指定用户。它走 NSS(nsswitch 配置的 /etc/group,以及 LDAP、AD、SSSD 等后端),所以在“为什么读不了这个目录”的排查里,往往是成本最低的第一条命令 —— 先确认身份,再谈权限。
基本信息
| 适用平台 | Linux / 类 Unix(coreutils) |
|---|---|
| 权限要求 | 普通用户即可 |
| 语法 | groups [用户名] |
| 等价写法 | id -Gn 用户名 |
| 数据来源 | NSS:/etc/group 或 LDAP/AD/SSSD 后端 |
典型使用场景
- 刚把用户加进某个组,确认是否真的生效
- 核对服务账号是否有权访问共享目录(先看组,再看目录属组)
- 排查 sudo、wheel、docker 等敏感组的成员构成
- AD/LDAP 接入环境里确认组映射是否按预期下发
- 生成排查记录或交接材料时留存身份证据
常用示例
常用示例
groups # 当前会话身份,主组排在最前
groups deploy # 查指定用户
id -Gn deploy # 等价写法,输出空格分隔,适合脚本取用
id deploy # 需要 uid/gid 数字时用完整版
su - deploy -c groups # 登录式重新初始化组列表,验证新加的组是否真生效
getent group dev # 反过来看这个组里都有谁输出与判读
| 写法 | 输出内容 | 怎么看 |
|---|---|---|
| groups 用户名 | 主组在前,后面依次是附加组 | 确认身份来源,注意主组也计入权限 |
| id -Gn | 空格分隔的组名列表 | 便于 grep 断言,写脚本首选 |
| getent group 组名 | 组名:x:GID:成员列表 | 主组为该组的用户不会出现在成员列表里,反查时别误判漏人 |
| id 用户名 | uid、gid 与全部组 | 需要数字身份或排查 uid 冲突时使用 |
LDAP/SSSD 环境首次查询可能触发缓存刷新,刚加完组立刻查偶尔为空:稍等重试,或用 sss_cache 清理该用户缓存后再看。
判断“这个用户能不能读写某目录”,groups 只是起点:还要看目录属组、权限位与 ACL(getfacl),以及用户在会话里的有效组是否已刷新。
输出顺序有含义:主组永远排在最前,后面才是附加组;脚本里想判断“是否属于某组”,用 id -Gn 用户名 后 grep 整词匹配,比解析 groups 的输出更稳。