userdel

删除用户账号及有关的文件


语法格式

userdel [-fr] login
userdel [-h | --help]

命令简介

userdel命令用于修改系统的用户账号文件/dec/passwd、/etc/shadow以及/etc/group等,删除与指定用户有关的所有记录,包括同名的主用户组。其中,login是欲删除的用户名。注意,指定的用户必须存在。

此外,/etc/login.defs文件中存在一个USERDEL_CMD变量,可用于定义一个命令或脚本,以便能够在运行userdel命令删除用户账号时,最后调用设定的命令,删除与指定用户有关的at、cron或打印作业等。

如果与之相关的进程正在运行,userdel命令通常不会删除一个用户账号。如果确有必要,可先终止用户进程,然后再使用userdel命令删除,或者直接运行userdel命令,增加“-f”选项(详见下面的说明)。

命令选项

-f, --force  强制删除用户账号,即使用户当前仍然注册,尚未退出系统。同时强制删除用户的主目录和邮箱等,即使另一个用户也使用同一主目录和邮箱。如果/etc/login.defs文件中的USERGROUPS_ENAB变量定义为yes,且存在与指定用户同名的用户组,用户组也将一起删除,即使该用户组仍然是另一用户的主用户组(如果未指定此选项,userdel命令通常会拒绝删除,同时给出警告)。注意,这个选项具有一定的危险性,有可能造成系统一致性方面的问题。

-r, --remove  删除用户主目录及其中的任何文件,删除用户邮箱等(用户邮箱的存储位置由/etc/login.defs文件中的MAIL_DIR变量定义)。用户主目录之外的文件需要手工检索与删除。

-h, --help  显示命令的用法与选项说明等帮助信息,然后退出。

应用实例

1. 删除guest用户的账号,包括同名的主用户组、用户主目录及其中的任何文件等。

# userdel –r guest
#

2. 系统随机手册提供一个删除at、cron与打印作业的示例脚本,其中的用户名是userdel命令传递的第一个参数。假定脚本的文件名是/usr/bin/rmjobs,可以把/etc/login.defs文件中的USERDEL_CMD变量设置为/usr/bin/rmjobs。之后,凡是运行userdel命令删除用户时即可附带删除有关的用户作业。

$ cat /usr/bin/rmjobs
#! /bin/sh

# Check for the required argument.
if [ $# != 1 ]; then
    echo "Usage: $0 username"
    exit 1
fi

# Remove cron jobs.
crontab -r -u $1

# Remove at jobs.
# Note that it will remove any jobs owned by the same UID,
# even if it was shared by a different username.
AT_SPOOL_DIR=/var/spool/cron/atjobs
find $AT_SPOOL_DIR -name "[^.]*" -type f -user $1 -delete \;

# Remove print jobs.
lprm $1

exit 0
$

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z