以前也看过用 root 错误执行 “rm -rf /*” 时, 系统会有一些保护措施, 但未有提到 “rm -f /*”, 一直也未试过, 今天在一台没有什么用途的 VPS 上面试试执行, 系统是 CentOS 7.
用 su – 进入 root 身份后, 执行 rm -f /* 这个指令, 结果立即看到以下报错:
rm: cannot remove ‘/backup’: Is a directory
rm: cannot remove ‘/boot’: Is a directory
rm: cannot remove ‘/dev’: Is a directory
rm: cannot remove ‘/etc’: Is a directory
rm: cannot remove ‘/home’: Is a directory
rm: cannot remove ‘/media’: Is a directory
rm: cannot remove ‘/mnt’: Is a directory
rm: cannot remove ‘/opt’: Is a directory
rm: cannot remove ‘/proc’: Is a directory
rm: cannot remove ‘/root’: Is a directory
rm: cannot remove ‘/run’: Is a directory
rm: cannot remove ‘/srv’: Is a directory
rm: cannot remove ‘/sys’: Is a directory
rm: cannot remove ‘/tmp’: Is a directory
rm: cannot remove ‘/usr’: Is a directory
rm: cannot remove ‘/var’: Is a directory
rm: cannot remove ‘/boot’: Is a directory
rm: cannot remove ‘/dev’: Is a directory
rm: cannot remove ‘/etc’: Is a directory
rm: cannot remove ‘/home’: Is a directory
rm: cannot remove ‘/media’: Is a directory
rm: cannot remove ‘/mnt’: Is a directory
rm: cannot remove ‘/opt’: Is a directory
rm: cannot remove ‘/proc’: Is a directory
rm: cannot remove ‘/root’: Is a directory
rm: cannot remove ‘/run’: Is a directory
rm: cannot remove ‘/srv’: Is a directory
rm: cannot remove ‘/sys’: Is a directory
rm: cannot remove ‘/tmp’: Is a directory
rm: cannot remove ‘/usr’: Is a directory
rm: cannot remove ‘/var’: Is a directory
这是用 ls 这个基本指令也会有以下错误:
# ls
-bash: /bin/ls: No such file or directory
-bash: /bin/ls: No such file or directory
# vi index.php
-bash: /usr/bin/vi: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
试过开启另一个 SSH session 不论输入密码或 SSH Key 也不能登入, 但 cd 指令可以用, 用 cd 配合 Tab 键也可以自动完成目录或档案名称, 但就不能开启.
这时可以确定档案应该还没有删除, 上面 rm 指令只是删除了 /bin, /lib, /lib64 及 /sbin 的软连结, 如果原来执行错误指令的 SSH session 没有登出, 解决方法很简单, 就是用 sln 指令重新建立软连结便可以:
# sln /usr/bin /bin
# sln /usr/sbin /sbin
# sln /usr/lib /lib
# sln /usr/lib64 /lib64
# sln /usr/sbin /sbin
# sln /usr/lib /lib
# sln /usr/lib64 /lib64
如果要试执行这类指令还是很危险的, 一定要在没有么用途的系统或者测试环境做。