userdel - 删除用户帐户和相关文件
概要
userdel [选项] LOGIN
描述
userdel 是一个用于删除用户的低级工具。在 Debian 上,管理员通常应使用 [deluser]({filename}../../deluser)(8) 代替。
userdel 命令修改系统帐户文件,删除所有引用用户名称 LOGIN 的条目。指定的用户必须存在。
选项
适用于 userdel 命令的选项是:
-f, --force
此选项强制删除用户帐户以及任何其他请求的操作,并跳过任何安全检查。
注意:此选项很危险,可能会导致系统处于不一致状态。
-h, --help
显示帮助消息并退出。
-r, --remove
用户主目录中的文件将被删除,以及主目录本身和用户的邮件 spool。位于其他文件系统上的文件需要手动搜索并删除。
邮件 spool 由 login.defs 文件中的 MAIL_DIR 变量定义。
-R, --root CHROOT_DIR
在 CHROOT_DIR 目录中应用更改,并使用 CHROOT_DIR 目录中的配置文件。仅支持绝对路径。
-P, --prefix PREFIX_DIR
在 PREFIX_DIR 目录中应用更改,并使用 PREFIX_DIR 目录中的配置文件。此选项不执行 chroot,而是用于准备交叉编译目标。存在一些限制:NIS 和 LDAP 用户/组不会被验证。PAM 身份验证使用主机文件。不支持 SELINUX。
-Z, --selinux-user
删除用户的登录的任何 SELinux 用户映射。
配置
/etc/login.defs 中的以下配置变量会更改此工具的行为:
MAIL_DIR(字符串)
邮件 spool 目录。在修改或删除相应的用户帐户时,需要操作邮箱。如果未指定,则使用编译时默认值。/etc/default/useradd 中的 CREATE_MAIL_SPOOL 参数确定是否应创建邮件 spool。
MAIL_FILE(字符串)
相对于用户的主目录,定义用户邮件 spool 文件的位置。
useradd、usermod 和 userdel 使用 MAIL_DIR 和 MAIL_FILE 变量来创建、移动或删除用户的邮件 spool。
MAX_MEMBERS_PER_GROUP(数字)
每个组条目的最大成员数。达到最大值时,将在 /etc/group 中启动一个新的组条目(具有相同的名称、相同的密码和相同的 GID)。
默认值为 0,这意味着组中成员的数量没有限制。
此功能(拆分组)允许限制组文件中的行长度。这对于确保 NIS 组的行不超过 1024 个字符非常有用。
如果您需要强制执行此限制,可以使用 25。
注意:并非所有工具(即使在 Shadow 工具套件中)都支持拆分组。
除非您真的需要,否则不应使用此变量。
USERDEL_CMD (字符串) 如果定义了此命令,则在删除用户时将运行此命令。它应该删除属于要删除的用户(作为第一个参数传递)的所有 at/cron/print 作业等。
该脚本的返回代码不会被考虑。
以下是一个示例脚本,它删除用户的 cron、at 和 print 作业:
#! /bin/sh
# 检查是否提供了必需的参数。
if [ $# != 1 ]; then
echo "用法:$0 用户名"
exit 1
fi
# 删除 cron 作业。
crontab -r -u $1
# 删除 at 作业。
# 请注意,它将删除所有属于相同 UID 的作业,
# 即使它由不同的用户名共享。
AT_SPOOL_DIR=/var/spool/cron/atjobs
find $AT_SPOOL_DIR -name "[^.]*" -type f -user $1 -delete \;
# 删除 print 作业。
lprm $1
# 完成。
exit 0
USERGROUPS_ENAB (布尔值) 如果设置为 yes,userdel 将删除用户组(如果该组不再包含任何成员),并且 useradd 将默认创建一个与用户同名的组。
文件
/etc/group
组帐户信息。
/etc/login.defs
Shadow 密码套件配置。
/etc/passwd
用户帐户信息。
/etc/shadow
安全的用户帐户信息。
/etc/shadow-maint/userdel-pre.d/*, /etc/shadow-maint/userdel-post.d/*
在用户删除期间执行的 run-part 文件。环境变量 ACTION 将填充 userdel,SUBJECT 将填充用户名。userdel-pre.d 将在任何用户删除之前执行。userdel-post.d 将在用户删除之后执行。如果脚本以非零退出,则执行将终止。
/etc/subgid
每个用户的辅助组 ID。
/etc/subuid
每个用户的辅助用户 ID。
退出值
userdel 命令的退出值为:
0 成功
1 无法更新密码文件
2 无效的命令语法
6 指定的用户不存在
8 用户当前已登录
10 无法更新组文件
12 无法删除主目录
注意事项
userdel 不允许您删除帐户,如果存在属于该帐户的正在运行的进程。在这种情况下,您可能需要终止这些进程或锁定用户的密码或帐户,稍后删除该帐户。-f 选项可以强制删除此帐户。
您应该手动检查所有文件系统,以确保没有剩余的文件由此用户拥有。
您不能删除 NIS 客户端上的任何 NIS 属性。这必须在 NIS 服务器上执行。
如果 /etc/login.defs 中的 USERGROUPS_ENAB 定义为 yes,userdel 将删除与用户同名的组。为了避免 passwd 和 group 数据库中的不一致性,userdel 将检查此组是否用作另一个用户的 prim