首页/系统/Linux 运维命令速查/groups 查看用户所属组

groups 查看用户所属组

groups 快速列出用户的主组与附加组;等价于 id -Gn,适合写在排查脚本第一行确认身份来源。

Linux 运维命令速查系统更新于 2026-10-13

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 的输出更稳。

易错点

  • 在旧会话里查 groups 拿到旧数据,误判成加组没生效;新开终端或 su - 再查一次
  • 把 groups 当成访问能力的证明:真正的判定依据是文件属组/权限位/ACL 加上会话的有效组身份
  • 只读 /etc/group 做结论,漏掉 LDAP/AD 里的组关系;统一改用 getent group
  • 服务进程运行很久后才加组,进程内组列表不更新导致依然无权限,排查时容易误以为是配置写错

数据来源与参考

  • man 1 groups(coreutils)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌