n0p*_*0pe 202 unix filesystems rm
我经常想知道如果你运行rm -rf /. 我怀疑操作系统是否能够自行擦除(?)
额外问题:命令执行后,会rm自行删除吗?
更新: 我已经使用 VirtualBox 在几个主要的 unix 发行版中对此进行了测试,答案准确地描述了会发生什么。如果给出正确的参数,rm 将删除磁盘上的每个物理数据位。但是,在使用 rm 版本而不是 GNU 版本时,我遇到了一些问题。例如,我相信 BusyBox 有自己的版本,它不会让您尽可能多地删除。
Amb*_*jak 190
如果你有rm来自 GNU coreutils(最有可能是一个普通的 Linux 发行版),rm -rf /将被内置保护拒绝(根据联机帮助页和维基百科,还没有尝试过)。
您可以使用--no-preserve-root. rm然后将删除所有可能的内容,而不会在尝试删除每个文件后停止。当然,它不会像/proc和那样删除虚拟文件系统/sys,但这无关紧要——它会删除磁盘上的所有内容。
命令完成后,您的磁盘将被清空,包括操作系统。内核和当前进程将继续从内存中运行,但许多进程会因为无法访问某些文件而死亡。操作系统下次将无法启动。
Pri*_*cey 22
设置虚拟机并尝试玩乐?
它会走得很远……如果您使用的是 gui,您可能会很高兴地注意到事物的退化更加明显。(菜单上的图标停止加载等)
如果您放手不管,操作系统将几乎无法恢复,尽管您可以轻松取回一些数据。
无论哪种方式,您都会想要重新安装操作系统。
Hel*_*o71 12
好吧,在http://bellard.org/jslinux/上尝试会产生:
rm:无法删除“/dev/pts”:设备或资源繁忙
rm:无法删除“/dev”:目录不为空
rm:无法删除“/proc/swaps”:不允许操作
rm:可以't remove '/proc/kallsyms': 不允许操作
rm: 不能删除 '/proc/dma': 不允许操作SNIP 881 条目
rm:无法删除“/proc/149/oom_adj”:权限被拒绝
rm:无法删除“/proc/149”:不允许操作
rm:无法删除“/proc”:设备或资源繁忙
rm:无法删除“/tmp”:设备或资源繁忙
rm:无法删除“/”:设备或资源繁忙
我记得这在过去的alt.sysadmin.recovery日子里被咀嚼过,当时没有这样的东西/proc,/dev只是一个包含一堆不寻常 inode 条目的常规目录......
...但是,在 Unix 的某些变体上(我记得是 HP-UX,但这可能是完全错误的),您无法删除正在运行的程序的最后一个目录条目。(共享库?那些是什么?)
在这样的系统中,如果您在维护模式下启动一起来(因此没有运行,但你的shell,甚至没有init,不产生二次文件系统被安装)并没有exec /bin/rm -rf /,你会留下一个完全空的根文件系统的不同之处在于/bin和/bin/rm会存活。
可怕的恶魔寺院的居民认为这是合适的。
rm -rf /最近的实现中不应允许这样做,因为有人建议它违反了 POSIX 标准:
不管怎样,最后,我们修改了规范,Solaris 10(自 build 36 起)有一个 /usr/bin/rm 版本(/bin 是 Solaris 上 /usr/bin 的符号链接)和 /usr/ xpg4/bin/rm 的行为如下:
Run Code Online (Sandbox Code Playgroud)[28] /bin/rm -rf / rm of / is not allowed [29]