如何在 Linux 中删除带有主目录的用户帐户
在本教程中,我将带您了解在 Linux 系统上删除用户帐户及其主目录的步骤。
要了解如何在 Linux 系统上创建用户帐户并管理它们,请阅读以下链接中的文章:
- 15 个“useradd”命令示例,用于管理 Linux 中的用户帐户
- 15 个“usermod”命令示例,用于在 Linux 中更改/修改用户帐户名称
- 如何在 Linux 中管理具有文件权限的用户和组
作为Linux 的系统管理员,您可能必须在某个时间之后删除用户帐户,因为用户帐户可能长时间处于休眠状态,或者用户离开组织或公司或出于任何其他原因。
在 Linux 系统上删除用户帐户时,删除其主目录也很重要,以便为新系统用户或其他服务释放存储设备上的空间。
删除/移除用户帐户及其主目录
1.为了演示目的,首先我将在我的系统上创建两个用户帐户,即用户example和用户linuxsay,他们的主目录分别为/home/example和/home/linusay,使用adduser命令。
# adduser example # passwd example # adduser linuxsay # passwd linuxsay
从上面的截图中,我使用了adduser命令在 Linux 上创建用户帐户。您也可以使用useradd命令,两者相同,并且执行相同的工作。
2.现在让我们进一步了解如何使用deluser(对于 Debian 及其衍生产品)和userdel(对于基于 RedHat/CentOS 的系统)命令在 Linux 中删除或移除用户帐户。
deluser和userdel命令的配置文件内的指令决定了运行该命令时它将如何处理所有用户文件和目录。
让我们看一下deluser命令的配置文件,该文件/etc/deluser.conf
在 Debian 衍生产品(如 Ubuntu、Kali、Mint)上,对于 RHEL/CentOS/Fedora 用户,您可以查看这些/etc/login.defs
文件。
这些配置中的值是默认值,可以根据您的需要进行更改。
# vi /etc/deluser.conf [On Debian and its derivatives] # vi /etc/login.defs [On RedHat/CentOS based systems]
3.要删除具有主目录的用户,您可以使用高级方法,在 Linux 服务器上执行以下步骤。当用户登录到服务器时,他们会使用服务并运行不同的进程。需要注意的是,只有当用户未登录到服务器时才能有效地删除用户。
在 Linux 中锁定用户帐户
首先锁定用户账户密码,这样用户就无法访问系统。这将阻止用户在系统上运行进程。
包含–lock选项的passwd命令可以帮助您实现这一点:
# passwd --lock example Locking password for user example. passwd: Success
查找并终止用户所有正在运行的进程
接下来,找出用户帐户的所有正在运行的进程,并通过确定用户拥有的进程的PID(进程 ID )来终止它们:
# pgrep -u example 1947 1959 2091 2094 2095 2168 2175 2179 2183 2188 2190 2202 2207 2212 2214
然后,您可以借助以下命令以完整格式列出用户名、PID、PPID(父进程 ID)、使用的终端、进程状态、命令路径等进程,如下所示:
# ps -f --pid $(pgrep -u example) UID PID PPID C STIME TTY STAT TIME CMD example 1947 1 0 10:49 ? SLl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login example 1959 1280 0 10:49 ? Ssl 0:00 mate-session example 2091 1959 0 10:49 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch mate-session example 2094 1 0 10:49 ? S 0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch mate-session example 2095 1 0 10:49 ? Ss 0:00 //bin/dbus-daemon --fork --print-pid 6 --print-address 9 --session example 2168 1 0 10:49 ? Sl 0:00 /usr/lib/dconf/dconf-service example 2175 1959 0 10:49 ? Sl 0:02 /usr/bin/mate-settings-daemon example 2179 1959 0 10:49 ? Sl 0:47 marco example 2183 1 0 10:49 ? Sl 0:00 /usr/lib/gvfs/gvfsd example 2188 1959 0 10:49 ? Sl 0:00 mate-panel example 2190 1 0 10:49 ? Sl 0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes example 2202 1 0 10:49 ? S<l 0:20 /usr/bin/pulseaudio --start --log-target=syslog example 2207 1959 0 10:49 ? S 0:00 /bin/sh /usr/bin/startcaja example 2212 1 0 10:49 ? Sl 0:03 /usr/bin/python /usr/lib/linuxmint/mintMenu/mintMenu.py example 2214 1 0 10:49 ? Sl 0:11 /usr/lib/mate-panel/wnck-applet ....
一旦找到用户的所有正在运行的进程,您就可以使用killall 命令来终止那些正在运行的进程,如下所示。
# killall -9 -u example
-9是SIGKILL信号的信号编号,或者使用-KILL代替-9并且-u定义用户名。
注意:在最近发布的 RedHat/CentOS 7.x 版本和 Fedora 21+ 中,您将收到以下错误消息:
-bash: killall: command not found
要修复此类错误,您需要安装 psmisc 包,如下所示:
# yum install psmisc [On RedHat/CentOS 7.x] # dnf install psmisc [On Fedora 21+ versions]
删除前备份用户数据
接下来,您可以备份用户文件,这可以是可选的,但建议在将来需要查看用户帐户详细信息和文件时使用。
我使用tar 实用程序创建了用户主目录的备份,如下所示:
# tar jcvf /user-backups/example-home-directory-backup.tar.bz2 /home/example
删除/移除用户帐户和文件
现在您可以安全地删除用户及其主目录,要删除系统上的所有用户文件,请使用--remove-all-files
以下命令中的选项:
# deluser --remove-home example [On Debian and its derivatives] # userdel --remove example [On RedHat/CentOS based systems]
概括
这就是从 Linux 系统中删除用户及其主目录的全部内容。我相信本指南很容易理解,但您可以通过发表评论来表达您的疑虑或添加更多想法。