创建、修改和删除系统用户,底层靠 useradd/usermod/userdel 三个命令完成。
创建用户:useradd
useradd 按命令行选项加 /etc/login.defs 默认值创建账户,同时更新 /etc/passwd、/etc/shadow、/etc/group[1][2]。
useradd -m -s /bin/bash -c "真实姓名" newuser
-m:创建家目录并拷贝/etc/skel/模板-s:指定登录 shell-c:GECOS 注释字段
不加 -m 时家目录不会创建,需手动建立并 chown。
Debian/Ubuntu 推荐上层工具 adduser,它会交互式补全信息;useradd 是底层工具,适合脚本[2]。
修改用户:usermod
usermod -s /bin/sh -c "新注释" newuser
常用选项:
-aG sudo:追加到补充组(必须与-a配合)-L:锁定密码(在/etc/shadow密码前加!)-U:解锁密码-e YYYY-MM-DD:设置账户过期时间
改 UID 时,家目录内文件属主会自动更新;家目录外需手动修复[4]。
删除用户:userdel
userdel -r olduser
-r:同时删除家目录和 mail spool-f:强制删除(即使用户已登录)
删除后 /etc/passwd 中该行消失,id olduser 报 no such user。
回滚
- 新建用户后悔:
userdel -r <用户名> - 误改 shell:
usermod -s /bin/bash <用户名> - 误锁账户:
usermod -U <用户名>
排错速查
| 现象 | 原因 | 处理 |
|---|---|---|
useradd: 用户已存在 |
LOGIN 重复 | 换名或删旧用户 |
cannot create home dir |
家目录路径无权写入 | 检查权限或用 root |
userdel: user currently logged in |
用户有活跃进程 | pkill -u 或 -f 强制 |
usermod: user does not exist |
拼写错误或已删 | 检查 /etc/passwd |
实测与局限性
- 实测环境:WSL2 Ubuntu 24.04,shadow 1:4.13。
- 已验证:useradd 建用户+家目录、usermod 改 shell/锁账户/追加组、userdel 删用户+家目录、
id与grep /etc/passwd回读校验。 - 局限性:WSL2 无法完整验证 PAM 登录流程;NIS/LDAP 集中用户未测;SELinux 上下文未测。
参考资料
- [1] useradd(8) – Linux manual page (man7.org)(man7-useradd)
- [2] useradd(8) — passwd — Debian trixie(debian-useradd)
- [3] usermod(8) – Linux manual page (man7.org)(man7-usermod)
- [4] usermod – Ubuntu manpages(ubuntu-usermod)
- [5] userdel(8) – Linux manual page (man7.org)(man7-userdel)
- [6] userdel – Ubuntu manpages(ubuntu-userdel)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。