删除用户以及此用户拥有的所有文件
我使用deluser
没有参数的deluser
--remove-all-files
:
$ deluser 'user'
除了rm -r /home/user
之外还有一种方法可以删除用户现在拥有的所有文件(因为我已经执行了deluser)吗?
您将不得不手动查找文件,这可能是deluser
会做的。
请注意--remove-all-files
与rm -r /home/user
。 后者仅删除homedir(可能包括该用户不拥有的文件,尽管不常见),前者从系统中删除该用户拥有的所有文件。 至少如果要信任该联机帮助页 。
GNU find
有一个-user
测试,因此你可以find / -user xxx
来查找用户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
(当然你可能更喜欢先运行它而不使用-delete
以确保没有任何你想要保留的内容,并且在编写剩余的命令时捕获任何错误。在/
上执行递归删除操作时出错为了胆小的人。)
另一种选择是使用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创建新用户,则可以找到这些孤立文件。
但是,您可能会找到更多文件 – 不仅仅是属于已删除文件的文件。