如何在 Linux 中删除主目录的用户帐户
在本教程中,我将引导您完成在 Linux 系统上删除用户帐户及其主目录的步骤。
要了解如何在 Linux 系统上创建用户帐户并管理它们,请阅读以下链接中的以下文章:
- 在 Linux 中管理用户帐户的 15 个“useradd”命令示例
- 在 Linux 中更改/修改用户帐户名称的 15 个“usermod”命令示例
- 如何在 Linux 中管理用户和组的文件权限
作为 Linux 中的系统管理员,当用户帐户可能长时间处于休眠状态,或者用户可能离开组织或公司或任何其他原因时,您可能必须删除用户帐户。
在 Linux 系统上删除用户帐户时,删除其主目录以便为新系统用户或其他服务释放存储设备上的空间也很重要。
删除/移除用户帐户及其主目录
1. 为了演示目的,首先我将在我的系统上创建两个用户帐户,即用户 howtoing 和用户 linuxsay 及其主目录/home/howtoing 和 /home/linusay 分别使用 adduser 命令。
adduser tecmint
passwd tecmint
adduser linuxsay
passwd linuxsay
从上面的屏幕截图中,我使用了 adduser 命令在 Linux 上创建用户帐户。您还可以使用useradd命令,两者相同并且执行相同的工作。
2. 现在让我们进一步了解如何使用 deluser (对于 Debian 及其衍生版本)和 userdel (对于基于 RedHat/CentOS 的系统)命令。
deluser 和 userdel 命令的配置文件中的指令决定了运行该命令时它将如何处理所有用户文件和目录。
让我们看一下 deluser 命令的配置文件,在 Debian 衍生品(例如 Ubuntu、Kali、Mint 和 RHEL/CentOS/Fedora 上)为 /etc/deluser.conf
用户,可以查看/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 tecmint
Locking password for user tecmint.
passwd: Success
查找并终止用户所有正在运行的进程
接下来找出用户帐户的所有正在运行的进程,并通过使用以下命令确定用户拥有的进程的PID(进程ID)来杀死它们:
# pgrep -u tecmint
1947
1959
2091
2094
2095
2168
2175
2179
2183
2188
2190
2202
2207
2212
2214
然后,您可以借助以下命令以完整格式列出用户名、PID、PPID(父进程 ID)、使用的终端、进程状态、命令路径等方面的进程,如下所示:
# ps -f --pid $(pgrep -u tecmint)
UID PID PPID C STIME TTY STAT TIME CMD
tecmint 1947 1 0 10:49 ? SLl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
tecmint 1959 1280 0 10:49 ? Ssl 0:00 mate-session
tecmint 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
tecmint 2094 1 0 10:49 ? S 0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch mate-session
tecmint 2095 1 0 10:49 ? Ss 0:00 //bin/dbus-daemon --fork --print-pid 6 --print-address 9 --session
tecmint 2168 1 0 10:49 ? Sl 0:00 /usr/lib/dconf/dconf-service
tecmint 2175 1959 0 10:49 ? Sl 0:02 /usr/bin/mate-settings-daemon
tecmint 2179 1959 0 10:49 ? Sl 0:47 marco
tecmint 2183 1 0 10:49 ? Sl 0:00 /usr/lib/gvfs/gvfsd
tecmint 2188 1959 0 10:49 ? Sl 0:00 mate-panel
tecmint 2190 1 0 10:49 ? Sl 0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
tecmint 2202 1 0 10:49 ? S<l 0:20 /usr/bin/pulseaudio --start --log-target=syslog
tecmint 2207 1959 0 10:49 ? S 0:00 /bin/sh /usr/bin/startcaja
tecmint 2212 1 0 10:49 ? Sl 0:03 /usr/bin/python /usr/lib/linuxmint/mintMenu/mintMenu.py
tecmint 2214 1 0 10:49 ? Sl 0:11 /usr/lib/mate-panel/wnck-applet
....
一旦找到用户的所有正在运行的进程,您就可以使用killall命令来终止这些正在运行的进程,如图所示。
killall -9 -u tecmint
-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/tecmint-home-directory-backup.tar.bz2 /home/tecmint
删除/删除用户帐户和文件
现在您可以安全地删除用户及其主目录,要删除系统上的所有用户文件,请使用以下命令中的 --remove-all-files
选项:
deluser --remove-home tecmint [On Debian and its derivatives]
userdel --remove tecmint [On RedHat/CentOS based systems]
概括
这与从 Linux 系统中删除用户及其主目录有关。我相信该指南很容易遵循,但您可以通过发表评论来表达疑虑或添加更多想法。