如何在 Ubuntu 上取回 sudo?
我已經這樣做了:
sudo chown -R myname /usr/
sudo
現在由於此錯誤,我無法使用該命令:sudo:必須是 setuid root
當我讀到這意味著這個文件的所有者
/usr/bin/sudo
不是根。/usr
由於文件夾上的 chown,它現在是我的使用者。在許多論壇和部落格上,人們建議以 root 身份執行此操作:
# chown root:root /usr/bin/sudo # chmod 4111 /usr/bin/sudo
…但是問題是我需要以 root 身份登錄,但我不能,因為如果我
su
在終端中寫入密碼錯誤(實際上我使用的是我添加給我的使用者的密碼):$ su Password: su: Authentication failure
那麼我可以取回
sudo
命令嗎?編輯:我的 Ubuntu 在我的 Mac OS X 上處於 Parallels 之下。
如果您有一個類似的系統,您可以將其用作查看所有文件的正確所有權的指南,那麼您可以引導進入救援模式,進入 root shell,然後手動恢復所有文件的正確所有權。中的文件
/usr
。最快的方法可能是重新安裝作業系統或從備份中恢復。
在 Ubuntu 或類似系統中,預設情況下沒有 root 密碼(帳戶被禁用),這就是為什麼你不能
su
.
由於您已經對唯一可以授予您根級別訪問權限的東西進行了授權,因此您將需要來自目前軟體環境之外的一些幫助來解決此問題。
我建議最簡單的方法是為您的發行版啟動 LiveCD,安裝您的驅動器,並使用
chmod
您從那裡列出的文件權限更改文件權限。您也可以嘗試引導至單使用者模式以獲得 root shell。
請注意,通常
/usr/
應該擁有目錄中的所有內容,root
因此您應該能夠執行遞歸chown
來修復您破壞的任何內容。(**編輯:**根據@Gilles 的評論,顯然執行chown
中斷 setuid 和 setgid 位,因此您需要手動與現有系統進行比較,以在您再次修復所有權後恢復所有這些。)但是,應該很少
4111
。這個額外的權限是一種特殊權限,但即使以使用者身份執行,它也會以 root 身份執行!只有sudo
少數幾個命令應該設置此權限位。如果您沒有執行 achmod
開始,您可能根本不需要修復此問題,所有權限都應該已經正確。不要在chmod
不知道所有權限應該是什麼的情況下執行大型操作。