linux命令之userdel使用详解


userdel可删除用户帐号与相关的文件,若不加参数,则仅删除用户帐号,而不删除相关文件,此命令只有 root 用户才能使用。用户添加命令(useradd)的使用参考可点击此处。
userdel 是一个底层用于删除用户的工具,在 Debian 上通常还会使用 deluser 命令。userdel 会查询系统账户文件,例如 /etc/password 和 /etc/group。查询得知有该用户时它会删除所有和用户名相关的条目;在删除它之前,用户名必须存在。强制删除一个用户时userdel 提供了 -f 选项来实现,甚至当用户已经登入 Linux 系统时此选项仍旧生效。有件事我们必须了解,带 -f 选项的 userdel 不会断开该用户已有的SSH连接。即使用户已经不存在,但实际上仍是登录状态且为活跃用户;但是当用户登出后不可再登录,因为用户已经被删除。故该选项使用起来有些危险,因为它会使系统进入不一致的状态。
命 令:userdel
功能说明:删除用户帐号。
语 法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
-f:强制删除用户,即使用户当前已登录
-r:删除用户登入目录以及目录中所有文件
userdel比较简单,有一个参数可选 -r ;如果加参数-r,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;现在有个用户linuxoa,现在我们来删除这个用户:
userdel linuxoa
注:删除用户linuxoa,但不删除其家目录及文件;
userdel -r linuxoa
注:删除用户linuxso,其家目录及文件一并删除;
警告: 请不要轻易用-r参数;这会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份。
其实也有最简单的办法,但这种办法有点不安全,即直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd 是极为重要的文件,一不小心会操作失误;在调用 -f 选项之前最好使用:killall -u username
来将该用户所有的运行进程中止掉。如果用户使用SELinux功能,还需要搭配'-Z'参数。
-Z : Remove any SELinux user mapping for the user when deleting user from Linux
-f : Delete Linux user account with force removal of files
-r : Remove Linux user account including home directory and mail spool
其相似命令groupdel 是用来删除用户组的
语法格式:groupdel 用户组
groupdel admin
删除这个无主的文件可以用下面这条命令:
find / --nouser -exec rm -rfv {} \
删除所有用户不存在而遗留的文件(因为用户已被删除,其文件的拥有者为其UID,参数nouser用于删除此类文件)
用户的相关数据包含如下几项:
用户基本信息:存储在 /etc/passwd 文件中;
用户密码信息:存储在 /etc/shadow 文件中;
用户群组基本信息:存储在 /etc/group 文件中;
用户群组信息信息:存储在 /etc/gshadow 文件中;
配置文件(/etc/login.defs)
Default values are taken from the information provided in the /etc/login.defs file for RHEL (Red Hat) based distros. Debian and Ubuntu Linux based system use /etc/deluser.conf file:
# /etc/deluser.conf: deluser configuration - Debian / Ubuntu Linux only.
# Remove home directory and mail spool when user is removed
REMOVE_HOME = 0
# Remove all files on the system owned by the user to be removed
REMOVE_ALL_FILES = 0
# Backup files before removing them. This options has only an effect if
# REMOVE_HOME or REMOVE_ALL_FILES is set.
BACKUP = 0
# target directory for the backup file
BACKUP_TO = "."
# delete a group even there are still users in this group
ONLY_IF_EMPTY = 0
# exclude these filesystem types when searching for files of a user to backup
EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs)"
一个极其小心的操作过程:
1、锁定用户
# passwd -l freeoa
或让其过期
# usermod --expiredate 1 freeoa
OR
#usermod --expiredate YYYY-MM-DD userName
如果expiredate为1时,会将用户的过期时间设定到1970年。
完成后如果用户登录,会收到如下的消息(视不同的终端可能提示的方式不同或没有提示):
Your account has expired; please contact your system administrator Authentication failure
备份该用户的文件
tar -cvzf /nas/backup/deledusers/freeoa.$uid.tar.gz /home/freeoa/
停止该用户所启动或所属的进程
# pgrep -u freeoa
# ps -fp $(pgrep -u freeoa)
OR
# killall -KILL -u freeoa
移除用户的at jobs
# find /var/spool/at/ -name "[^.]*" -type f -user freeoa -delete
移除用户的cron jobs
# crontab -r -u freeoa
打印任务
# lprm freeoa
#再找一遍属于该用户的文件
# find / -user freeoa -print
#将其文件归属修改
# find / -user freeoa -exec chown newUserName:newGroupName {} \;
准备工作已经完成,可以删除用户了
# userdel -r freeoa
userdel 是一个底层用于删除用户的工具,在 Debian 上通常还会使用 deluser 命令。userdel 会查询系统账户文件,例如 /etc/password 和 /etc/group。查询得知有该用户时它会删除所有和用户名相关的条目;在删除它之前,用户名必须存在。强制删除一个用户时userdel 提供了 -f 选项来实现,甚至当用户已经登入 Linux 系统时此选项仍旧生效。有件事我们必须了解,带 -f 选项的 userdel 不会断开该用户已有的SSH连接。即使用户已经不存在,但实际上仍是登录状态且为活跃用户;但是当用户登出后不可再登录,因为用户已经被删除。故该选项使用起来有些危险,因为它会使系统进入不一致的状态。
命 令:userdel
功能说明:删除用户帐号。
语 法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参 数:
-f:强制删除用户,即使用户当前已登录
-r:删除用户登入目录以及目录中所有文件
userdel比较简单,有一个参数可选 -r ;如果加参数-r,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;现在有个用户linuxoa,现在我们来删除这个用户:
userdel linuxoa
注:删除用户linuxoa,但不删除其家目录及文件;
userdel -r linuxoa
注:删除用户linuxso,其家目录及文件一并删除;
警告: 请不要轻易用-r参数;这会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份。
其实也有最简单的办法,但这种办法有点不安全,即直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd 是极为重要的文件,一不小心会操作失误;在调用 -f 选项之前最好使用:killall -u username
来将该用户所有的运行进程中止掉。如果用户使用SELinux功能,还需要搭配'-Z'参数。
-Z : Remove any SELinux user mapping for the user when deleting user from Linux
-f : Delete Linux user account with force removal of files
-r : Remove Linux user account including home directory and mail spool
其相似命令groupdel 是用来删除用户组的
语法格式:groupdel 用户组
groupdel admin
删除这个无主的文件可以用下面这条命令:
find / --nouser -exec rm -rfv {} \
删除所有用户不存在而遗留的文件(因为用户已被删除,其文件的拥有者为其UID,参数nouser用于删除此类文件)
用户的相关数据包含如下几项:
用户基本信息:存储在 /etc/passwd 文件中;
用户密码信息:存储在 /etc/shadow 文件中;
用户群组基本信息:存储在 /etc/group 文件中;
用户群组信息信息:存储在 /etc/gshadow 文件中;
配置文件(/etc/login.defs)
Default values are taken from the information provided in the /etc/login.defs file for RHEL (Red Hat) based distros. Debian and Ubuntu Linux based system use /etc/deluser.conf file:
# /etc/deluser.conf: deluser configuration - Debian / Ubuntu Linux only.
# Remove home directory and mail spool when user is removed
REMOVE_HOME = 0
# Remove all files on the system owned by the user to be removed
REMOVE_ALL_FILES = 0
# Backup files before removing them. This options has only an effect if
# REMOVE_HOME or REMOVE_ALL_FILES is set.
BACKUP = 0
# target directory for the backup file
BACKUP_TO = "."
# delete a group even there are still users in this group
ONLY_IF_EMPTY = 0
# exclude these filesystem types when searching for files of a user to backup
EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs)"
一个极其小心的操作过程:
1、锁定用户
# passwd -l freeoa
或让其过期
# usermod --expiredate 1 freeoa
OR
#usermod --expiredate YYYY-MM-DD userName
如果expiredate为1时,会将用户的过期时间设定到1970年。
完成后如果用户登录,会收到如下的消息(视不同的终端可能提示的方式不同或没有提示):
Your account has expired; please contact your system administrator Authentication failure
备份该用户的文件
tar -cvzf /nas/backup/deledusers/freeoa.$uid.tar.gz /home/freeoa/
停止该用户所启动或所属的进程
# pgrep -u freeoa
# ps -fp $(pgrep -u freeoa)
OR
# killall -KILL -u freeoa
移除用户的at jobs
# find /var/spool/at/ -name "[^.]*" -type f -user freeoa -delete
移除用户的cron jobs
# crontab -r -u freeoa
打印任务
# lprm freeoa
#再找一遍属于该用户的文件
# find / -user freeoa -print
#将其文件归属修改
# find / -user freeoa -exec chown newUserName:newGroupName {} \;
准备工作已经完成,可以删除用户了
# userdel -r freeoa