Answers:
您将不得不手动查找文件,而这可能就是deluser
这么做的。
请注意,--remove-all-files
是不一样的rm -r /home/user
。后者仅删除homedir(虽然可能不常见,但可能包括该用户不拥有的文件),而前者将从系统中删除该用户拥有的所有文件。至少联机帮助页是值得信任的。
GNU find
有一个-user
测试,因此您可以find / -user xxx
查找user拥有的所有文件xxx
。xxx
将用户名,可(在这种情况下将必须这样做,因为用户不再存在)是用户的数字ID。find
也有一个-delete
选择,所以
find / -user xxx -delete
尽管我没有同时使用所有选项测试该命令,但应该这样做。
编辑:数字ID:我说您必须使用数字ID的原因是,因为您已经删除了用户,所以他的输入/etc/passwd
也被删除了(它与其他内容一起具有用户ID和用户名) 。
因此,如果您没有删除他的homedir,最简单的方法之一就是只查询该homedir的所有者的ID:
stat -c %u /home/user/
(stat
是一种读取文件系统数据的工具。它-c %u
说明了stat
如何写入其输出,在这里我要它仅输出用户ID)
如果您喜欢单线,甚至可以链接两个命令:
find / -user $(stat -c %u /home/user/) -delete
(当然,您可能更喜欢先运行no -delete
,以确保没有要保留的内容,并捕获在编写其余命令时犯的任何错误。进行递归删除操作时的错误/
并不适合于晕倒。的心。)
rm
using xargs
(但是如果结果太多,这可能会达到参数限制),但是请-depth
参阅,并引用信息手册:“如果您的`find'命令删除了目录,您可能会发现当“ find”试图递归到已被删除的目录时,您会收到一条虚假的错误消息。使用“ -depth”选项通常可以解决此问题。” (稍后在同一部分中,“((`-delete'仍然意味着'-depth')”)”)
find: 'user' is not the name of a known use
/etc/passwd
列出用户及其ID的映射。您将必须找到数字ID。这样做stat -c %u /home/user/
,它应该为您提供数字用户ID,xxx
如上使用。
另一个选择是使用来重新添加用户adduser
,指定旧的UID,然后deluser
再次运行,并带有--remove-all-files
标志。
例如,假设用户具有用户名alice
和UID 1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu find具有-nouser和-nogroup选项,在中查找它man find
。使用这些选项,您可以在/ etc / passwd中找到文件系统中没有相应用户的所有文件。如果尚未使用删除的用户的旧uid创建新用户,则可以找到这些孤立文件。
但是,您可能会发现更多文件-不仅是那些属于已删除文件的文件。
-exec
如果您想对删除进行更多控制,还可以使用find选项运行自定义rm命令,但是YMMV我从未尝试过这样做。