以前也看過用 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
如果要試執行這類指令還是很危險的, 一定要在沒有麼用途的系統或者測試環境做。