usermod 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于用户与权限命令族(见用户与权限命令族)。用户建好后要改属性,就找它。
usermod(user modify)修改已有用户的各种属性:附属组、家目录、登录 shell、uid、是否锁定等。最常用也最容易踩坑的是改组。
一、追加附属组:-aG(重点)
bash
sudo usermod -aG docker alice # 把 alice 追加进 docker 组
sudo usermod -G docker,sudo alice # 危险:设成"仅这两个组",清掉其他附属组
-aG的-a(append)绝不能漏!只用-G grp会覆盖用户原有的全部附属组,只剩你写的那些——这是经典事故。要"加一个组"必须-aG。改完需重新登录组才生效。
二、改家目录 / shell
bash
sudo usermod -d /new/home -m alice # -d 改家目录位置,-m 同时搬移旧内容
sudo usermod -s /bin/zsh alice # 改登录 shell
-d只改记录里的路径,-m(move)才真的把文件搬过去。改 shell 用-s,禁登录可设/sbin/nologin或/bin/false。
三、锁定与解锁
bash
sudo usermod -L alice # 锁定(密码前加 !,禁止密码登录)
sudo usermod -U alice # 解锁
-L/-U锁定/解锁,效果等同passwd -l/-u(见passwd)。注意-L只禁密码,若该用户还能用密钥 SSH 登录则锁不住。
四、改 uid
bash
sudo usermod -u 2002 alice # 改 uid(家目录内文件属主不会自动变,需手动 chown)改 uid 后,原家目录及文件的属主还是旧 uid,需用
chown -R(见chown)重新归属,否则用户可能读不了自己的文件。
一句话总结
usermod = 改用户属性:-aG 组 追加附属组,漏 -a 会覆盖全部原有组(经典事故);-d -m 改家目录并搬文件、-s 改 shell;-L/-U 锁/解锁(等同 passwd -l/-u);改 uid 后需手动 chown -R 重归属家目录文件。