如何在Linux中删除用户账户及其主目录

作为Linux系统中的系统管理员,您可能需要在一段时间后删除用户的账户,因为用户账户可能会长期处于休眠状态,或者用户可能因为其他原因离开组织或公司。

在Linux系统上删除用户账户时,删除他们的主目录以在存储设备上为新的系统用户或其他服务腾出空间也很重要。

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

要学习如何在Linux系统上创建用户账户并管理它们,请阅读以下文章,链接如下:

如何删除/移除带有主目录的用户账户

为了演示,首先我将在我的系统上创建两个用户账户,即用户tecmint和用户linuxsay,他们的家目录分别是/home/tecmint/home/linusay,使用adduser命令。

adduser tecmint
passwd tecmint

adduser linuxsay
passwd linuxsay
Create New User Accounts in Linux

从上面的截图中,我使用了adduser命令在Linux上创建用户账户。您也可以使用useradd命令,两者都是相同的,但主要区别在于它们的预期用途和用户界面。

adduser”命令是为向系统添加用户提供的高级接口,执行任何必要的设置,并使用默认设置为用户创建家目录。

另一方面,“useradd”是向系统添加用户的低级工具,并更新用户信息。它默认不创建用户的家目录,需要管理员手动指定额外的选项。

现在让我们进一步了解如何使用deluser(对于Debian及其衍生版本)和userdel(对于基于RedHat的系统)命令在Linux中删除或移除用户账户。

sudo deluser --remove-home username
sudo userdel -r username

上面的命令将删除用户的家目录以及他们的账户。

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

让我们来看看deluser命令的配置文件,对于Debian衍生版本如Ubuntu、Kali和Mint,这个文件是/etc/deluser.conf,而对于RHEL/CentOS/Fedora用户,您可以查看/etc/login.defs文件。

这些配置中的值是默认的,可以根据您的需要进行更改。

vi /etc/deluser.conf         [On Debian and its derivatives]
vi /etc/login.defs           [On RedHat/CentOS based systems]
Del User Configuration

要删除带有家目录的用户,您可以使用高级方法,在您的Linux服务器机器上按照以下步骤操作。当用户登录到服务器时,他们使用服务并运行不同的进程。需要注意的是,只有当用户没有登录到服务器时,才能有效地删除用户。

如何在Linux中锁定用户账户

要在Linux中锁定用户账户,您可以使用passwd命令,后跟-l--lock选项以及用户名。锁定用户账户可以防止用户登录,同时仍然保留账户及其关联文件。

sudo passwd -l username
OR
sudo passwd -lock username
Lock User Account Password in Linux

要解锁账户,您可以再次使用passwd命令,这次使用-u选项。

sudo passwd -u username

如何在Linux中查找并杀死用户运行的进程

在Linux中,您可以使用ps命令来查找与特定用户关联的进程,并使用kill命令来终止这些进程。

查找用户进程

使用ps命令,加上-u标志和用户名,可以列出特定用户的进程。

ps -u username

然后,您可以通过以下命令以完整格式列出进程,包括用户名、PID(进程ID)、PPID(父进程ID)、使用的终端、进程状态和命令路径:

ps -f --pid $(pgrep -u tecmint)
Find All Running Processes of the User

终止用户进程

一旦找到用户的所有运行进程,您可以使用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]

在删除用户之前如何备份用户数据

要在Linux系统中删除用户账户之前备份用户数据,您可以按照以下命令操作。

sudo mkdir /backup
sudo cp -r /home/username /backup

或者,您可以创建用户数据的压缩存档以节省存储空间。我使用了tar命令来创建用户主目录的备份,如下所示:

sudo tar -zcvf /backup/username_backup.tar.gz /backup/username
Backup User Home Directory in Linux

如何在Linux中删除/移除用户文件

现在您可以安全地删除用户及其主目录,要在系统中删除所有用户文件,请在以下命令中使用--remove-all-files选项:

deluser --remove-home tecmint      [On Debian and its derivatives]
userdel --remove tecmint           [On RedHat/CentOS based systems]
Delete User Account with Home Directory

总结

这就是从Linux系统中删除用户及其主目录的全部内容。我相信这个指南足够简单易懂,但如果您有任何疑问或想要添加更多想法,请留下评论。

Source:
https://www.tecmint.com/delete-remove-a-user-account-with-home-directory-in-linux/