网站搜索

如何在 Linux 中删除主目录的用户帐户


在本教程中,我将引导您完成在 Linux 系统上删除用户帐户及其主目录的步骤。

要了解如何在 Linux 系统上创建用户帐户并管理它们,请阅读以下链接中的以下文章:

  1. 在 Linux 中管理用户帐户的 15 个“useradd”命令示例
  2. 在 Linux 中更改/修改用户帐户名称的 15 个“usermod”命令示例
  3. 如何在 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 的系统)命令。

deluseruserdel 命令的配置文件中的指令决定了运行该命令时它将如何处理所有用户文件和目录。

让我们看一下 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

-9SIGKILL 信号的信号编号,或使用 -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 系统中删除用户及其主目录有关。我相信该指南很容易遵循,但您可以通过发表评论来表达疑虑或添加更多想法。