048 usermod命令
命令说明
usermod 用于修改已有账号的属性:锁定/解锁、改 shell、改主组/附加组、改家目录、改 UID、设置过期时间等,是账号生命周期管理的核心命令。
语法
usermod [选项]... 用户名
常用参数
| 参数 | 说明 |
|---|---|
| -aG 组 | 追加附加组(append),不加 -a 会覆盖原有附加组! |
| -G 组1,组2 | 设置附加组列表(覆盖式) |
| -g 组 | 修改主组 |
| -L / -U | 锁定 / 解锁账号(shadow 中密码前加 !) |
| -l 新名 | 修改登录名 |
| -s Shell | 修改登录 shell |
| -u UID | 修改用户 ID(该用户文件属主不会自动变) |
| -d 目录 -m | 改家目录并迁移原内容(-m 必须配合) |
| -e 日期 | 设置账号过期时间 |
| -c 备注 | 修改 GECOS 注释 |
| -S | 修改密码状态(高级) |
使用示例
$ usermod -aG docker zhangsan
把用户加入 docker 组(保留其他组)
$ usermod -s /bin/bash lisi
把 lisi 的 shell 从 nologin 改回 bash
$ usermod -L wangwu
临时锁定离职员工账号
$ usermod -U wangwu
解锁账号
$ usermod -g developers zhangsan
修改主组为 developers
$ usermod -d /data/home/zhangsan -m zhangsan
迁移家目录到新位置
$ usermod -e 2026-06-30 intern01
给实习生账号设到期日
$ usermod -l newname oldname
重命名用户(家目录需另行改)
$ id zhangsan
验证组变更结果
实用技巧
- 最高危参数:-G 不带 -a 会把用户从其他附加组里踢出去!加组永远写 -aG,这是生产事故高发点。
- -L 锁定后用户无法密码登录,但已登录会话与 SSH 密钥登录可能仍有效;彻底断访问要配合改 shell 为 nologin 并踢会话(pkill -u 用户)。
- 改组后用户需重新登录才生效(组成员关系在登录时加载),可用 newgrp 组名 在当前会话临时生效。
- usermod -u 改 UID 后,用户已有的文件属主不会自动更新,需 find / -uid 旧值 -exec chown 新值 {} \; 补救。
- 不能对正在登录的用户改名/改 UID,先确保该用户无进程:ps -u 用户名 检查。