usermod是linux中专用于修改已有用户账户属性的核心命令,必须由root或sudo权限用户执行,通过直接更新/etc/passwd、/etc/shadow等文件实现即时生效;常用操作包括:-l重命名用户名(不自动改家目录)、-d -m迁移并修改家目录、-s切换默认shell、-g/-g/-ag调整主/附加组、-l/-u锁定/解锁账户,以及-c、-e、-u、-f等设置备注、过期时间、uid和非活动期。

usermod 是 Linux 中专用于修改已有用户账户属性的核心命令,必须由 root 或具备 sudo 权限的用户执行。它不创建新用户,而是直接更新 /etc/passwd、/etc/shadow、/etc/group 等系统文件,修改立即生效。
以下是你最常用、最实用的几类操作方式:
修改用户名(登录名)
用 -l(login)选项重命名用户,注意:仅改名称,不自动改家目录或邮件 spool 名。
sudo usermod -l newname oldname
⚠️ 重要提示:原家目录名(如 /home/oldname)不会自动重命名,需手动处理;若该用户正在登录,建议先退出再操作。
更改用户主目录(家目录)
用 -d 指定新路径(必须是绝对路径),搭配 -m 可自动迁移旧目录内容:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
sudo usermod -d /home/newhome -m username
✅ 推荐组合使用 -d 和 -m,避免用户登录后找不到配置文件(如 .bashrc、.profile)。
切换用户的默认 Shell
用 -s 指定合法 shell 路径(可查 cat /etc/shells 确认):
sudo usermod -s /bin/zsh username
常见值:/bin/bash、/bin/sh、/bin/zsh、/usr/bin/fish。
修改用户所属组
-
-g:设置初始组(主组),该组必须已存在:sudo usermod -g developers username
-
-G:设置附加组列表(会覆盖原有附加组):sudo usermod -G docker,adm,sys username
-
-aG:追加到附加组(保留原有组)——这是最安全常用的写法:sudo usermod -aG sudo username
锁定与解锁用户账户
-
-L:在/etc/shadow密码字段前加!,使密码失效(用户无法登录):sudo usermod -L username
-
-U:移除!,恢复密码有效性:sudo usermod -U username
? 锁定后用户仍可通过 SSH 密钥等方式登录(若配置了),真正禁用需配合
chage -E 0或删 home 目录等。
补充常用操作
-
-c "Full Name":更新备注字段(显示在finger或/etc/passwd第5段) -
-e 2027-12-31:设置账号过期时间(格式YYYY-MM-DD) -
-u 1005:修改 UID(注意:需同步修正该用户所有文件属主,否则权限错乱) -
-f 7:设密码过期后 7 天自动禁用账号
操作前建议先用 id username 或 getent passwd username 查看当前状态,修改后可用相同命令验证是否生效。
不复杂但容易忽略细节,关键在于理解每个选项的作用范围和副作用。










