直接运行groups命令即可查看当前用户所有组名,空格分隔,不显示数字id,反映内核运行时凭证;但输出顺序不保证主组在前,新组需重新登录才生效,而id命令可提供uid、gid及全部组的数字与名称信息。

直接运行 groups 命令就能快速查出当前终端用户所拥有的全部组权限——不用加参数、不用 sudo、也不用指定用户名,敲完回车,输出就是当前 shell 会话实际生效的组名列表,空格分隔。
为什么 groups 是最直接的方式
它读取的是内核维护的运行时凭证(credentials),反映的是你此刻能真正使用的组权限,比如输出 users docker www-data,说明你当前可以以这三个组身份访问对应资源。不像 /etc/group 或 getent 那样只查静态配置,groups 显示的是“已生效”的结果。
注意输出顺序不代表主组优先
- 第一个组不一定是主组,不能靠 cut -d' ' -f1 取主组名
- 要准确获取主组名称,请用 id -gn
- 要确认是否在某个特定组(如 docker),建议用 groups | grep -qw docker,避免空格或换行干扰
查完发现缺组?很可能没生效
- 刚用 usermod -aG docker $USER 加了组,但没重新登录或新开 shell,groups 就不会显示
- 图形界面下重启终端也不够,需完全登出再登录,或运行 newgrp docker(会启新子 shell)
- 容器内执行 groups 看不到宿主机新增的组,因用户命名空间隔离
需要更多信息?搭配 id 命令看全貌
groups 只给组名,id 还能告诉你 UID、主组 GID、所有附加组及其 GID。比如 docker 权限报错时,光看组名不够,得确认当前 shell 是否真拿到了 docker 的 GID——这时 id -Gn(组名)和 id -G(纯数字 GID)就比 groups 更可靠。











