groupmod 改什么
groupmod 修改用户组的定义:-n 改组名,-g 改 GID,改动只落在 /etc/group 与 /etc/gshadow。磁盘上的文件记的是 GID 数字,所以只改名不影响既有文件的属组;而改 GID 会让旧属组文件变成孤儿组,ls 里显示为未知组名,原本组可读写的目录立刻失去权限。所属 shadow-utils(RHEL/CentOS)或 passwd(Debian/Ubuntu),需要 root。
基本信息
| 适用平台 | Linux(shadow-utils / passwd 包) |
|---|---|
| 权限要求 | root |
| 语法 | groupmod [-g GID] [-n 新名] 组名 |
| 相关文件 | /etc/group、/etc/gshadow |
| 慎用选项 | -o 允许 GID 重复(等于两组同权,属于静默放权) |
典型使用场景
- 团队改组名:developers 改成 devteam,成员关系与文件属组都不受影响
- 与企业统一身份(LDAP/AD)对齐 GID,避免共享目录权限错乱
- 把占用系统保留号段(小于 1000)的自建组迁到普通号段
- 治理命名规范:统一加上 app-、db- 之类前缀
- 清理重复 GID 造成的越权访问(改号后配合批量 chgrp)
常用示例
常用示例
getent group developers # 先看清现状:名称、GID、成员
groupmod -n devteam developers # 只改名:既有文件属组不受影响(按 GID 记)
groupmod -g 3001 devteam # 改 GID:磁盘上旧属组文件不会自动跟随
find /data -xdev -gid 2001 -print | head # 先盘点旧 GID 名下的文件
find /data -xdev -gid 2001 -exec chgrp -h devteam {} + # 批量修属组,-h 让软链自身也改
getent group devteam # 复核新 GID 与成员是否到位改名前后的影响对照
| 操作 | 对既有文件的影响 | 需要额外动作 |
|---|---|---|
| 只改名 groupmod -n | 无影响(文件按 GID 记录) | 同步修改脚本、sudoers、Ansible 里写死的旧组名 |
| 改 GID groupmod -g | 旧 GID 文件显示为未知组,属组权限失效 | 先盘点再批量 chgrp,最后确认旧 GID 不再被引用 |
| 把旧 GID 复用给新组 | 历史文件会瞬间落进新组权限范围 | 属于越权风险:必须先清理旧 GID 再回收号段 |
改 GID 是权限敏感操作:动手前用 getent group 记录现状,放在维护窗口做。若旧 GID 后来被分配给别的组,历史文件会立刻对新组可读可写,属于不易察觉的越权。
组信息变更不会影响已经打开的会话:正在运行的进程沿用启动时加载的组列表,需要新开终端、su - 或重启服务才能看到新身份。