首页>教程>Linux 命令手册> 用户与权限管理 >Linux userdel 命令 - 删除用户账户及关联的系统文件

Linux userdel 命令 - 删除用户账户及关联的系统文件

userdel 是类 Unix 系统(Linux、FreeBSD等)中的一款用于删除用户账户及关联系统文件的命令工具。userdel 命令在删除用户时会同步修改与系统账户相关的文件(如 /etc/passwd/etc/group/etc/shadow 等),删除这些文件中有关该用户的信息,同时也可以选择是否清理用户的根目录、邮件池等关联文件。不同系统对其支持和使用略有差异。

[!TIP]

userdel 需要以 root 权限或者 sudo 权限执行。Debian 系发行版推荐使用封装后的 deluser 工具删除用户。

userdel 命令语法结构

userdel 命令的语法结构非常的简单,如下给出其基本语法结构:

userdel [选项] LOGIN

语法结构中各部分解释说明:

  • [选项]: 可选的选项,用于自定义删除的具体行为
  • LOGIN: 需要删除用户的登录名,即 /etc/passwd 配置文件中对应的用户名

userdel 命令使用示例

基础删除用户

不使用任何选项,直接运行 userdel 命令删除用户:

sudo userdel testuser

[!NOTE]

该种方式只删除系统中 testuser 账户,及相关配置文件中的该用户的信息,不会删除用户的根目录、邮件池文件

删除用户并清理根目录与邮件池

使用 -r--remove 选项,在删除用户的同时,删除用户的根目录和邮件池文件:

sudo userdel -r testuser

[!NOTE]

邮件池的目录位置由 /etc/login.defs 文件中的 MAIL_DIR 变量定义,通常在 /var/mail/ 中与用户同名的目录中。

强制删除用户

使用 -f--force)选项,会跳过用户登录状态、关联进程等安全检查,直接删除用户:

sudo userdel -f testuser

userdel 命令选项详解

如下给出 userdel 命令的选项的详细的解释说明:

选项解释说明
-f, --force跳过用户登录状态、是否存在进程等安全检查,强制删除用户
-h, --help显示命令的帮助信息并退出
-r, --remove删除用户账户的同时,同步删除其根目录、邮件池
-R, --root CHROOT_DIR在指定的 chroot 目录中执行删除用户的操作,同时使用 CHROOT_DIR 目录下的系统配置文件
-P, --prefix PREFIX_DIR在指定的 PREFIX_DIR 目录中修改用户账户文件
-Z, --selinux-user删除用户账户时,同步移除与其对应的 SELinux 用户的映射关系

userdel 配置与文件说明

核心配置文件

userdel 命令的删除用户的行为受 /etc/login.defs 配置文件的制约,关键配置项如下:

  • MAIL_DIR: 定义用户邮件池的存储目录,/etc/default/useradd 文件中的 CREATE_MAIL_SPOOL 变量,控制是否自动创建用户邮件池,userdel 删除用户时会根据该配置判断邮件池是否存在。
  • USERGROUPS_ENAB: 其值为布尔值(yes / no),如果值为 yesuserdel 会删除与用户同名的主组(如果主组中没有其他的成员);如果为 no,不会自动删除用户的主组。
  • MAX_MEMBERS_PER_GROUP: 定义组文件中每行的最大成员数,为了避免组文件行过长。
  • USERDEL_CMD: 自定义脚本路径,如果定义该变量,userdel 删除用户时会执行该脚本,用于清理用户的 cron、打印任务等关联作业。

关联系统文件

userdel 命令删除用户时会删除相关配置文件中的用户信息,相关的配置文件有:

文件路径作用userdel 操作影响
/etc/passwd存储系统所有用户的基础信息,如:登录名、UID、GID、家目录、Shell 等删除用户对应条目
/etc/group存储系统所有组的信息,包含用户所属组如何 USERGROUPS_ENAB 值为 yes,则删除用户的同名主组
/etc/shadow存储用户的加密后的密码、密码有效期等敏感信息删除用户对应条目
/etc/subuid, /etc/subgid存储用户的从属 UID / GID 信息删除用户对应条目
/var/mail/[LOGIN]用户邮件池存储目录,由 MAIL_DIR 变量定义其具体值使用 -r 选项时会删除该文件或目录
/home/[LOGIN]用户的默认根目录-r 选项时删除该目录
/etc/shadow-maint/userdel-pre.d/删除用户前需要执行的脚本的目录执行目录内所有可执行的脚本
/etc/shadow-maint/userdel-post.d/删除用户后需要执行的脚本的目录执行目录内所有可执行的脚本

userdel 命令的退出状态码

userdel 命令执行完成后会返回一个状态码,根据其返回的值,可以判断其执行所处的状态:

状态码含义可能的原因说明
0执行成功删除用户账户的操作正常完成,无任何错误
1无法更新密码文件可能是权限不足、/etc/passwd 文件只读等,导致无法正常修改用户的信息
2命令语法无效可能是选项拼写错误、缺少必选参数(LOGIN)等,而导致语法解析失败
6指定用户不存在输入的 LOGIN 对应的登录名在系统中不存在
8用户当前已登录需要删除的用户处于登录状态,或者由正在运行的进程,默认会拒绝删除
10无法更新组文件可能是由于权限不足、/etc/group 只读等,导致无法正确修改组信息
12无法删除根目录可能是因为根目录权限不足、文件被占用等,-r 选项删除根目录时,删除失败

结语

userdel 作为类 Unix 系统(Linux、FreeBSD等)中核心的删除用户的工具,是系统运维中必须要掌握的一个命令,同时删除不必要的用户,也可以保障系统的运行安全。但是使用的过程中要谨慎。

掌握 userdel 的语法、选项及其使用示例,再结合 useraddusermodpasswd 等命令,即可有效的管理系统的账户。