请注意:此问题的答案和评论包含来自另一个类似问题的内容,该问题已受到外部媒体的大量关注,但结果证明是某种病毒式营销计划中的恶作剧问题。由于我们不允许以这种方式滥用ServerFault,因此删除了原始问题并将答案与该问题合并。
这是一个有趣的悲剧。今天早上我在我的生产服务器上做一些维护,当我错误地执行了以下命令时:
sudo rm -rf --no-preserve-root /mnt/hetznerbackup /
我之前没有发现最后一个空格/
,几秒钟后,当警告充斥我的命令行时,我意识到我刚刚按下了自毁按钮。以下是一些让我眼花缭乱的东西:
rm: cannot remove `/mnt/hetznerbackup': Is a directory
rm: cannot remove `/sys/fs/ecryptfs/version': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/inode_readahead_blks': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_max_to_scan': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/delayed_allocation_blocks': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/max_writeback_mb_bump': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_stream_req': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_min_to_scan': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/mb_stats': Operation not permitted
rm: cannot remove `/sys/fs/ext4/md2/trigger_fs_error': Operation not …
Run Code Online (Sandbox Code Playgroud) 这是基于这里的这个恶作剧问题。所描述的问题是有一个 bash 脚本,其中包含以下内容:
rm -rf {pattern1}/{pattern2}
Run Code Online (Sandbox Code Playgroud)
...如果两种模式都包含一个或多个空元素rm -rf /
,则假设原始命令被正确转录并且 OP 正在进行大括号扩展而不是参数扩展,则将扩展为至少一个实例。
命令 [...] 是无害的,但似乎几乎没有人注意到。
Ansible 工具可以防止这些错误,[...] 但是 [...] 似乎没有人知道这一点,否则他们就会知道我所描述的不会发生。
因此,假设您有一个rm -rf /
通过大括号扩展或参数扩展发出命令的 shell 脚本,使用Ansible是否会阻止该命令被执行,如果是这样,它是如何做到的?
rm -rf /
只要您使用 Ansible 来执行,以 root 权限执行是否真的“无害”?
如果您不按shift,则在已删除的 Windows 中可以在垃圾箱中找到已删除的文件,
rm -f
linux中删除的文件怎么办