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 用户名 检查。