首页 > Sysadmin > 正文

Linux 用户管理:添加、修改与删除

huyuanwen 2026-11-03 Sysadmin

创建、修改和删除系统用户,底层靠 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 改属性[3][4]。

usermod -s /bin/sh -c "新注释" newuser

常用选项:

  • -aG sudo:追加到补充组(必须与 -a 配合)
  • -L:锁定密码(在 /etc/shadow 密码前加 !)
  • -U:解锁密码
  • -e YYYY-MM-DD:设置账户过期时间

改 UID 时,家目录内文件属主会自动更新;家目录外需手动修复[4]。

删除用户:userdel

userdel 从系统文件中删除账户记录[5][6]。

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 上下文未测。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。