用户组管理需区分主组与附加组:添加附加组用 usermod -aG 或 gpasswd -a;更换主组用 usermod -g;移出附加组用 gpasswd -d 或 usermod -G;变更后需重新登录生效。

把用户加入或移出指定用户组,核心是区分主组(primary group)和附加组(secondary/group),操作方式不同,不能混用。
加入附加组(最常用)
用户可以同时属于多个附加组,权限叠加。推荐用 usermod -aG 或 gpasswd -a:
-
usermod -aG groupname username:-a 表示追加(append),不覆盖已有附加组;-G 指定附加组列表。例如:
sudo usermod -aG sudo,developers alice -
gpasswd -a username groupname:更直观,适合单次添加。例如:
sudo gpasswd -a bob docker - 注意:直接用
usermod -G groupname username(缺 -a)会清空该用户所有现有附加组,只保留你指定的这一个,容易误删权限
更换主组(即登录时默认所属组)
每个用户有且仅有一个主组,通常与用户名同名。修改主组用 usermod -g:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
usermod -g newgroup username:例如
sudo usermod -g admin jack,执行后 jack 新建文件的属组将变为 admin - 主组不能直接“移出”,只能换掉;原主组若无其他用户,删除用户时可能自动清理
- 查看当前主组:运行
id username,输出中 gid=xxx(groupname) 那一项就是主组
从附加组中移出用户
移出操作不会影响主组,只解除附加权限:
- usermod -G "" username:清空全部附加组(慎用)
-
gpasswd -d username groupname:精准移出某一个组。例如:
sudo gpasswd -d alice sudo - 也可用
usermod -G group1,group2 username显式列出想保留的附加组(不带 -a),但需确保已知全部目标组名,易遗漏
验证是否生效
组变更对当前已登录会话不立即生效,需重新登录或新开 shell:
- 检查用户所属全部组:
id username或groups username - 确认 /etc/group 文件中对应组行末是否包含该用户名(如
sudo:x:27:alice,bob) - 若在图形界面,建议完全退出会话再登录;终端中可执行
su - username测试

















