以 root 身份从 / 运行此命令是否安全

以 root 身份从 / 运行此命令是否安全
find . * -depth -print0 | xargs -0 rmdir

它递归地查找并删除所有空文件夹(包括隐藏的文件夹)。

我只在我的主文件夹和 Linux PC 中的随身碟上尝试过,它有效,但我不知道从 / 作为 root 运行是否安全

我曾经通过从互联网上运行一些命令(我不明白)来破坏我的操作系统。

答案1

页面manrmdir写着:-

Remove the DIRECTORY(ies), if they are empty.

如果你想删除所有空目录那么它会是安全的。您需要问的问题是:-

你想删除吗全部空目录?

有些应用程序需要一个目录,即使它是空的。例如,journald可以配置为仅记录到持久存储(如果/var/log/journald存在)。如果您在该目录为空时运行命令,那么它将被删除。之后journald将不会记录到持久存储,因为它找不到该目录。我相信 Fedora 默认情况下就是这样配置的。

此外,空的(未安装的)安装点也可以通过您的命令删除。它们应该很容易修复,但仍然可能让您陷入困境。

答案2

尽管此命令在大多数情况下可能是安全的,但在命令可以接受选项的地方使用是一个坏习惯*,因为以破折号开头的文件名(由错误创建或由可能利用另一个错误的恶意人员创建)可能会被解释作为一个选项。正如有人所说,*这里毫无意义,但您需要记住的是,特别是当以 root 身份运行命令时,您需要控制所有参数。一般来说,避免没有前缀的通配符(例如,代替*,./*通常更好)。另外,请小心文件名中的符号链接和空格......

答案3

find将打印目录树中的所有文件和文件夹。xargs运行提供的命令 -rmdir对于 find 返回的每个元素。

rmdir不会删除非空的文件夹,也不会删除文件 - 您可以尝试一下。mkdir一个文件夹,touch里面有一些文件,然后rmdir在该文件夹上运行。rmdir会抱怨这样的事情:rmdir: failed to remove ‘test’: Directory not empty,或者rmdir: failed to remove ‘test.txt’: Not a directory

所以是的,它应该是完全安全的。如果您想测试,您可以使用mkdir和创建一组测试文件夹,touch看看它是否符合您的预期。

另外,有关rmdir- 以及 *nix 中几乎所有命令的更多信息,请运行man <command>.

相关内容