pl1*_*1nk 13 command-line users
我在deluser没有参数的情况下使用过--remove-all-files:
$ deluser 'user'
Run Code Online (Sandbox Code Playgroud)
除了rm -r /home/user现在删除用户拥有的所有文件之外,还有其他方法吗(因为我已经执行了 deluser)?
njs*_*jsg 21
您将不得不手动查找文件,这可能是deluser这样做的。
请注意,--remove-all-files是不一样的rm -r /home/user。后者只删除 homedir(可能包括不属于该用户的文件,虽然不常见),前者从系统中删除该用户拥有的所有文件。至少如果要信任联机帮助页。
GNUfind有一个-user测试,因此您可以find / -user xxx查找 user 拥有的所有文件xxx。xxx将用户名,可(在这种情况下将必须这样做,因为用户不再存在)是用户的数字ID。find也有一个-delete选项,所以
find / -user xxx -delete
Run Code Online (Sandbox Code Playgroud)
应该这样做,虽然我没有同时测试所有选项的命令。
编辑:数字 ID:我说你必须使用数字 ID 的原因是,因为你已经删除了用户,他的条目/etc/passwd也被删除了(它有用户 ID 和他的用户名) .
因此,如果您没有删除他的 homedir,最简单的方法之一就是查询该 homedir 所有者的 ID:
stat -c %u /home/user/
Run Code Online (Sandbox Code Playgroud)
(stat是一个读取文件系统数据的工具。-c %u告诉stat如何写它的输出,这里我要求它简单地输出用户 ID)
如果你喜欢单行,你甚至可以链接两个命令:
find / -user $(stat -c %u /home/user/) -delete
Run Code Online (Sandbox Code Playgroud)
(当然,您可能更喜欢先运行它而不使用 no-delete以确保没有您想要保留的内容,并捕获您在编写命令的其余部分时犯的任何错误。执行递归删除操作时的错误/不适合微弱的心。)
另一种选择是使用 重新添加用户adduser,指定旧的 UID,然后deluser再次运行,这次使用--remove-all-files标志。
例如,假设用户有 usernamealice和 UID 1001:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files aliceRun Code Online (Sandbox Code Playgroud)