Linux

在 CentOS 6.4 中意外刪除了符號連結 libc.so.6。如何獲得 sudo 權限來重新創建它?

  • June 30, 2013

我不小心刪除了符號連結 /lib64/libc.so.6 -> /lib64/libc-2.12.so

$ sudo rm libc.so.6

然後我不能使用任何東西,包括ls命令。我輸入的任何命令都會出現錯誤

ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

我試過了

$ export LD_PRELOAD=/lib64/libc-2.12.so

在此之後我可以使用lsand ln ...,但仍然不能使用sudo ln ..., sudo -E ln ...sudo su甚至su。我總是犯這個錯誤

sudo: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

或者

su: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

它似乎LD_PRELOAD僅適用於我帳戶的目前 shell 會話,但不適用於新帳戶root或新會話。

這是一個遠端伺服器,所以我不能使用 live CD。我現在有一個 ssh bash 會話,但無法建立新會話。我有 sudo 權限,但沒有 root 密碼。

所以目前我的問題是我需要執行sudo sln -s libc-2.12.so libc.so.6重新創建符號連結libc.so.6,但sudo沒有libc.so.6.

我該如何解決?謝謝~

到目前為止,在這種情況下最好的做法是使用 livecd 啟動伺服器,掛載適用的分區,然後創建符號連結(注意符號連結在執行此操作時指向正確的位置,就好像它指向一個與執行時不同的絕對路徑,這將無濟於事)。

我想不出你可以執行不需要 libc 的程序,也想不出沒有 root 可以修改 root 環境的方法(按設計,後者是不可能的)。

此外,您應該真正取消綁定具有sudo rm /lib64/libc.so.6,輸入,您的密碼的宏鍵,然後輸入綁定到它。我只能想到一些更不方便的意外按鍵。

但是,作為最後的嘗試,嘗試不使用su任何選項,這會保留您的大部分環境並將您的 UID 設置為 root。

您也可以在目前工作目錄中創建符號連結並執行一些東西,儘管這並不總是有效。

引用自:https://serverfault.com/questions/519664