groups 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于用户与权限命令族(见用户与权限命令族)。"我在哪些组里"一眼看清。
groups 列出用户所属的组(主组 + 所有附属组)。排查"为什么我读不了这个组权限的文件"时,先确认自己在不在对应组。
一、基本用法
bash
groups # 当前用户所属组
groups bob # 查 bob 所属的组第一个输出的是主组(primary group),后面是附属组(supplementary groups)。想访问某组权限的资源,你必须在那个组里。
二、与 id -nG 等价
bash
groups # alice : alice sudo devteam
id -nG # alice sudo devteam(等价,空格分隔)
groups和id -nG(见id)信息一致,id 用空格、groups用:分隔并重复用户名。脚本里取组列表用id -nG更易解析。
三、实战:确认能否访问组资源
bash
groups | grep -q docker || echo "不在 docker 组,无法跑 docker"常见场景:装了 docker 却
permission denied,多半是当前用户不在 docker 组——groups一看便知,然后usermod -aG docker $USER加组、重登录生效。
四、改组后需重登录
bash
# usermod -aG 加组后,已登录的 shell 不会立即生效
newgrp docker # 或重新登录,让新组生效重要:用
usermod -aG加组后,当前已打开的终端不会立刻获得新组,需重登录或newgrp 组刷新。这是"明明加了组却还报错"的常见原因。
一句话总结
groups = 看用户所属组(主组 + 附属组):groups user 查他人,等价于 id -nG(见id,脚本解析更方便);排查"读不了组权限文件"先看自己在不在组;usermod -aG 加组后需重登录/newgrp 才生效。