我使用时deluser
不带参数--remove-all-files
:
$ deluser 'user'
rm -r /home/user
除了现在删除用户拥有的所有文件之外,还有其他方法吗(因为我已经执行了 deluser)?
答案1
您必须手动查找文件,这可能就是deluser
要做的事情。
请--remove-all-files
注意不是与 相同rm -r /home/user
。后者仅删除主目录(可能包括不属于该用户的文件,但并不常见),前者删除全部系统中该用户所拥有的文件。至少如果手册页值得信赖。
GNUfind
有一个-user
测试,因此您可以执行此操作find / -user xxx
来查找用户拥有的所有文件xxx
。xxx
将是用户名,并且可以(在这种情况下将要必须是用户的数字 ID,因为用户不再存在。find
还有一个-delete
选项,所以
find / -user xxx -delete
应该这样做,尽管我还没有同时测试使用所有选项的命令。
编辑:数字ID:我之所以说你必须使用数字 ID,是因为你已经删除了用户,所以他的条目也/etc/passwd
被删除了(它包含其他内容、用户 ID 和用户名)。
因此,如果你没有删除他的主目录,最简单的方法之一就是查询该主目录所有者的 ID:
stat -c %u /home/user/
(stat
是一个读取文件系统数据的工具。-c %u
告诉stat
如何写入其输出,这里我要求它简单地输出用户 ID)
如果你喜欢单行命令,你甚至可以链接两个命令:
find / -user $(stat -c %u /home/user/) -delete
(当然,您可能希望先使用 no 运行它,以-delete
确保没有任何要保留的内容,并捕获编写其余命令时所犯的任何错误。在执行递归删除操作时出错/
并不适合胆小的人。)
答案2
另一个选项是使用 重新添加用户adduser
,指定旧的 UID,然后deluser
再次运行,这次使用--remove-all-files
标志。
例如,假设用户的用户名是alice
和 UID1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
答案3
gnu find 有选项 -nouser 和 -nogroup,在 中查找man find
。使用这些选项,您可以找到文件系统中所有在 /etc/passwd 中没有对应用户的文件。如果您尚未使用已删除用户的旧 uid 创建新用户,则有可能找到这些孤立文件。
但是,您可能会找到更多文件 - 不仅仅是属于您已删除的文件。