Rm
在遠端伺服器上意外執行了 sudo rm /*
我在遠端 Ubuntu 伺服器中以 root 身份登錄時意外執行
rm /*
並刪除了幾乎所有的二進製文件,目前我既不能通過 ssh 或 ftp 登錄來恢復文件(希望最好)。有沒有辦法以某種方式解決這個混亂,或者我應該打電話給數據中心並要求格式?
rm /*
應該刪的很少。那裡沒有-r
可以遞歸刪除任何東西的標誌,沒有它,目錄將不會被刪除(即使目錄被刪除,也只能刪除空的目錄)。此答案基於您沒有執行的假設rm -rf /*
。結果根文件系統中唯一的文件可能是核心和 initrd 的符號連結(儘管在我正在查看的一個 Ubuntu 系統上,它們不存在)或
/lib64
64 位系統上的符號連結。問題可能只是
/lib64 -> /lib
符號連結已被刪除。但這很討厭,因為幾乎每個程序都將依賴該符號連結:$ ldd /bin/bash ... /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)
那
ld-linux
是動態載入器,如果它不可用,則無法執行任何動態執行檔。這將使登錄變得極其困難,您可能根本無法登錄。一位救世主可能是
busybox
。執行這個來檢查:$ ldd /bin/busybox not a dynamic executable
在這種情況下,busybox 應該是可執行的,但問題是如何執行它?
如果您可以訪問引導載入程序提示,您可以使用 引導
init=/bin/static-sh
,其中 static-sh 是一個符號連結busybox
(檢查是否/bin/static-sh
存在 - 它在我的系統上,但它不是標準的 Ubuntu。 這個錯誤表明它是可用的.)擁有根 shell 後,您可以重新創建
/lib64
符號連結。您可能需要首先將根文件系統重新掛載為讀/寫。busybox 應該內置了這些工具,您可以按如下方式執行它們:# busybox mount -o remount,rw / # busybox ln -s /lib /lib64 # /bin/bash bash#
如果 bash 有效,那麼問題應該得到解決。