首页/系统/Linux 运维命令速查/usermod 修改用户属性

usermod 修改用户属性

usermod 调整已存在账号的组、家目录、shell、UID 与过期时间;-aG 追加组(最常用)、-L/-U 锁定与解锁。

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

usermod 是什么

usermod 修改已存在账号的属性:所属组、家目录、登录 shell、UID、口令状态与过期时间。它最容易出事的地方在组参数——-G 会把附加组整体替换成给定的列表,-aG 才是在原有基础上追加。这个字母之差在日常操作里看不出区别,一直到某天发现账号丢了 sudo 权限或者读不到共享目录,才会回溯到那次「只是加了个组」的操作。

基本信息

适用平台Linux 全发行版(shadow-utils / passwd 包)
命令语法usermod [选项] 用户名
组相关选项-aG 追加附加组(保留原有)、-G 覆盖附加组、-g 修改主组
其他常用选项-s 登录 shell、-d 家目录、-m 与 -d 连用同时搬移家目录内容、-L 锁定口令、-U 解锁、-u 修改 UID、-l 修改用户名、-e 账号过期日期、-c 注释
权限要求需要 root 或 sudo

典型使用场景

  • 授权新组的访问权:用 -aG 把用户加入 docker、developers 等附加组
  • 冻结账号:人员离职或临时停用时先 -L 锁定,观察一段时间再决定是否删除
  • 禁止登录但保留服务:把 shell 改为 /sbin/nologin,账号仍可用于运行进程
  • 迁移家目录:把家目录移到数据盘,用 -d 与 -m 一起完成搬家
  • 统一 UID:跨主机对齐账号 UID,避免共享存储上的文件属主错乱
  • 改名:用 -l 修改用户名,同时按需调整家目录与 cron 任务

常用示例

常用示例
usermod -aG docker,developers deploy   # 追加附加组(保留原有组)
usermod -s /sbin/nologin olduser       # 禁止交互登录
usermod -L deploy                      # 锁定账号
usermod -U deploy                      # 解锁
usermod -d /data/home/deploy -m deploy # 改家目录并搬移内容
usermod -u 1500 deploy                 # 修改 UID(记得同步文件属主)
usermod -l newname oldname             # 修改用户名
usermod -e 2026-12-31 temp01           # 设置账号过期日期
id deploy; passwd -S deploy            # 改完核对结果

选项对照

选项作用风险提示
-aG追加附加组正确写法,保留原有组
-G覆盖附加组列表最容易误用,会静默剥夺原有权限
-g修改主组影响新建文件的属组
-d -m改家目录并搬移内容搬移期间目标空间要足够
-u修改 UID旧文件属主会显示为数字,需同步 chown
-L / -U锁定与解锁口令软锁,密钥登录仍可能生效
改 UID、用户名与家目录属于连带影响较大的操作:家目录、日志目录、应用数据、共享存储上的文件都要同步 chown;用户名相关还会牵涉 /var/spool/cron/ 下的定时任务目录名、邮件队列与部分应用的配置文件引用。操作前先列出该账号引用的资源,比事后逐个救火更省时间。
组成员变更不会影响已经建立的会话:正在登录的终端、已启动的进程仍然使用旧的组权限,需要重新登录或执行 newgrp 才能拿到新组。排查「加了组还是不生效」时先确认这一点,再怀疑配置。
usermod -L 只是把口令哈希前加感叹号的软锁,用户若保留了 SSH 公钥仍能登录。需要彻底禁止登录时,应同时把 shell 改为 /sbin/nologin、清理 ~/.ssh/authorized_keys,或直接删除账号并妥善处理其遗留文件。
批量变更前先留证据:改动前后各存一份 id 用户名 与 getent group 组名 的输出,组的增减一眼可见。涉及 UID 或用户名的变更建议记入变更台账,完成后用 find 路径 -user 旧UID 扫描共享存储,确认没有遗留的权限归属问题。
改 UID 或用户名之前先盘点影响面:家目录、定时任务、服务单元里硬编码的用户名、容器映射与备份策略都会跟着受影响。做法是先在配置与脚本里批量搜出引用位置,改完逐项核对并重新设置文件属主,最后再让相关服务重启。

易错点

  • usermod -G 与 -aG 记混:-G 覆盖原有附加组,-aG 才是追加,批量脚本写错会引发大面积权限事故
  • 改 UID 或用户名后不同步 chown 相关文件,文件属主显示为数字 UID,应用与备份工具都会出错
  • 修改正在登录用户的组,旧会话仍按旧权限运行,用户会误以为没生效;需要重新登录或 newgrp
  • usermod -L 后仍允许密钥登录,离职与停用场景需要配合 shell 与公钥清理
  • -d 改家目录不带 -m 只改配置字段,文件仍在原地,用户登录后会发现家目录是空的
  • 只改账号属性不重启依赖它的服务:已运行的进程仍带着旧的用户与组信息,权限表现与配置不一致,改完要按影响面逐个重启并验证

数据来源与参考

  • man 8 usermod(shadow-utils)
  • RHEL 文档:管理用户和组

相关工具

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