人人都会AI编程

useradd、usermod、userdel 用户操作

更新时间:2026-07-12

useradd、usermod、userdel:用户生命周期管理三剑客

在 Linux 系统中,每个使用系统的人都应该拥有一个独立的用户账号。useraddusermoduserdel 这三个命令覆盖了用户从创建、修改到删除的完整生命周期。它们本质上是在维护 /etc/passwd/etc/shadow/etc/group 等关键文件,但提供了更安全、更方便的操作接口,避免手动编辑这些文件时可能出现的格式错误或权限问题。


1. useradd:创建新用户

命令格式

useradd [选项] 用户名

最简示例

sudo useradd alice

这会创建一个名为 alice 的用户,并自动生成同名的用户组(除非另行指定),同时分配一个空密码(账户处于锁定状态,无法直接登录)。此时系统会在 /etc/passwd 中新增一行记录,并在 /home 下创建默认家目录(部分发行版可能需要 -m 选项才会创建家目录,建议显式使用)。

常用选项

  • -m:自动创建用户家目录(如 /home/alice),并从 /etc/skel 复制骨架文件(.bashrc.profile 等)。
  • -s /bin/bash:指定用户的默认登录 Shell,不指定时通常为 /bin/bash/bin/sh
  • -G sudo:将用户附加到一个或多个辅助组中,比如 sudo 组可使其拥有管理员权限。
  • -u 1001:手动指定用户的 UID(用户 ID),一般不常用,但在迁移或同步环境时有用。
  • -e 2025-12-31:设置账户过期日期,到期后账户自动禁用。

实战示例

sudo useradd -m -s /bin/bash -G docker,adm bob

创建用户 bob,创建家目录,指定 bash 为登录 Shell,并额外加入 dockeradm 两个组。

设置密码
useradd 默认不会设置可用密码。需要用 passwd 命令为新用户创建或修改密码:

sudo passwd alice

密码会被加密后存储在 /etc/shadow 文件中。


2. usermod:修改已有用户

命令格式

usermod [选项] 用户名

常用选项与 useradd 高度重合-s 改 shell,-G 改附加组,-u 改 UID 等,此外还有几个特别实用的参数:

  • -a -G 组名:保留用户原有组的同时,附加到新组。注意:直接使用 -G 会覆盖用户的所有附加组,所以务必加上 -a(append)。
  • -L:锁定用户密码,在 /etc/shadow 的密码字段前添加 !,使密码暂时失效(锁定账户)。
  • -U:解锁用户密码,移除 !
  • -l 新用户名:更改用户名,如 usermod -l newname oldname。改名后建议也相应修改家目录:usermod -d /home/newname -m newname-m 会移动原家目录的内容)。
  • -e 日期:修改账户过期时间,格式 YYYY-MM-DD

实战示例

# 将 alice 加入 sudo 组,并保留原有组
sudo usermod -a -G sudo alice

# 临时锁定 bob 的登录
sudo usermod -L bob

# 修改 bob 的登录 Shell 为 zsh,需确保 zsh 已安装
sudo usermod -s /usr/bin/zsh bob

修改完用户信息后,受影响的进程(如当前登录会话)不会立即感知变更,通常需要用户重新登录才能使 Shell 或组权限生效。


3. userdel:删除用户

命令格式

userdel [选项] 用户名

常用选项

  • -r:同时删除用户的家目录及邮件池(/var/spool/mail/用户名)。不加该选项时,家目录会被保留,某些情况下可能导致 UID 重复冲突或空间浪费。
  • -f:强制删除,即使该用户仍在登录状态也会强制踢出并删除。

注意:删除用户不会自动删除该用户拥有的文件(除非使用了 -r 且这些文件位于家目录下)。系统上其它位置可能仍残留属于该用户 UID 的文件,建议在删除前或删除后通过 find / -uid UID 查找清理。

实战示例

# 删除用户 carol,并一并删除其家目录
sudo userdel -r carol

4. 背后的文件与权限

这三个命令操作的底层文件主要有:

  • /etc/passwd:存储用户名、UID、GID、家目录、Shell 等基本信息,普通用户可读。
  • /etc/shadow:存储加密后的密码及密码过期策略,仅 root 可读写。
  • /etc/group:存储组名、GID 和组成员列表。

手动编辑这些文件虽然可行(使用 vipwvigr 更安全),但强烈建议通过上述命令操作,因为它们会自动处理文件锁、格式校验和影子文件的对应关系,避免人为失误导致无法登录。

掌握 useraddusermoduserdel 这一套组合,就能在命令行下高效、安全地完成用户账户的日常管理工作,无需任何图形界面。这也是 Linux 服务器运维的基本功之一。