如何安全地删除用户及其主文件夹?

我刚刚创建了一个新用户及其主文件夹,现在需要删除它,而且我找不到我的旧用户的Downloads、Documents、Pictures等文件夹在/home/olduser中,还有.Xauthority文件。不知道它是如何被删除的。当新用户无法登录时,我按下Alt+Ctrl+F3执行了startx命令。
我从“用户和组”中删除了用户,但它的主文件夹没有被删除。我该如何解决这个问题?
- 如何安全地删除新用户的主文件夹? - 如何恢复我的旧文档、下载文件夹? - 如果不能恢复,那么如何创建全新的/home文件夹并与操作系统链接?

你是用什么方法来添加用户的?这看起来有些奇怪的行为。 - Chuck R
我使用了从软件中心外部下载的用户和组应用程序(旧版而非新版的用户帐户)。 - Deepen
我在软件中心找不到那个软件包。不过,我还有几个问题要问你:1)你的主文件夹是否加密?2)如果是的话,在查看主文件夹内容时,你是否以主用户身份登录? - Chuck R
1)不 2)是的,当我登录并看到没有文件夹像文档、下载等时,我与那个用户检查过。 - Deepen
确实非常奇怪。你还记得那些文件夹中特定文件的名称吗?你可以通过使用“find /home -type f -iname '[完整文件名]'”来定位它。 - Chuck R
8个回答

列出所有用户:
cut -d: -f1 /etc/passwd

删除用户:
sudo userdel username

删除主目录:
sudo rm -r /home/username

为现有用户添加一个主目录:
创建一个主目录
将该目录的所有权分配给该用户
sudo usermod -d /home/directory user

这比那个要复杂一些。楼主说在这个过程中他的原始账户文件夹发生了一些问题。因此,我建议他暂时不要删除新用户的主目录,直到数据被找到(也许它不知怎么地被移动到了新用户的目录下)。 - Chuck R
第一次在Askubuntu上找到了特定的答案!非常感谢! :) - Deepen
我执行了sudo usermod -d /home/username username,得到了以下输出:usermod: no changes - Deepen
@nux 重新启动后完美运行!谢谢! :) - Deepen

你可以使用更高级的deluser命令:
sudo deluser --remove-home user

你还可以尝试使用--remove-all-files选项。来自man deluser的说明:
By  default,  deluser  will  remove  the user without removing the home
directory, the mail spool  or any other files on the  system  owned  by
the  user.  Removing  the home directory and mail spool can be achieved
using the --remove-home option.

The --remove-all-files option removes all files on the system owned  by
the  user.  Note  that  if you activate both options --remove-home will
have no effect because all files including the home directory and  mail
spool are already covered by the --remove-all-files option.

第二个选项可能需要一些时间来完成,这是可以预料到的。

16注意:这给我惹了大麻烦,因为它进入了我的NFS挂载点并删除了在NFS文件服务器上由同一用户创建的其他虚拟机上的文件!幸运的是,在我损失太多之前我停止了它,并且extundelete也帮了很大的忙!(--remove-all-files) - FreeSoftwareServers
2好吧,确实说“删除用户拥有的系统上的所有文件”。不过警告很棒!在使用--remove-all-files选项之前,卸载任何不希望被删除数据的驱动器或分区。或者跳过选项,在删除之前找到用户的文件以避免意外情况https://www.cyberciti.biz/faq/how-do-i-find-all-the-files-owned-by-a-particular-user-or-group/ - iyrin

最好的方法是使用userdel命令提供的OPTIONS

sudo userdel -rfRZ <username>

这将会:

  1. 强制删除

  2. 用户的主目录中的文件以及主目录本身和用户的邮件收件箱将被删除。其他文件系统中的文件必须手动搜索并删除。

  3. 在CHROOT_DIR目录中应用更改,并使用CHROOT_DIR目录中的配置文件。

  4. 删除用户登录的任何SELinux用户映射。

希望这对你有所帮助!


如果你已经通过正常的userdel <username>删除了用户,但是家目录仍然存在,就像我遇到的情况一样,你只需要运行rm -rf /home/<username>

3-f选项真的很危险,如果你输入错误的目录,那就是再见数据 :( - damadam
@damadam 没错,这就是为什么我完整陈述了这个论点。为了安全起见,在移除过程中最好省略并进行提示。 - HCM

sudo userdel -r olduser

删除用户的主目录和邮件收件箱

删除/移除用户账户和文件
# deluser --remove-home tecmint      [On Debian and its derivatives]
# userdel --remove tecmint           [On RedHat/CentOS based systems]

但在此之前还有其他一些步骤:
1. 在Linux中锁定用户账户
# passwd --lock tecmint

找到并终止用户的所有正在运行的进程。
# pgrep -u tecmint
# killall -9 -u tecmint

删除之前备份用户数据
tar jcvf /user-backups/tecmint-home-directory-backup.tar.bz2 /home/tecmint

来源参考:链接

  1. 前往设置并输入用户。
  2. 在用户下点击更改设置并输入根密码。
  3. 您必须有另一个管理员用户。
  4. 关闭要删除的用户的管理员选项。
  5. 点击页面底部的删除用户。

我喜欢这个,作为我的系统管理员工作中的一行主命令。
sudo Killall -u <username> && sudo deluser --remove-home <username> && sudo 
rm -rm /home/<username>