Ubuntu

如何在 Ubuntu 上取回 sudo?

  • December 15, 2017

我已經這樣做了:

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不知道所有權限應該是什麼的情況下執行大型操作。

引用自:https://unix.stackexchange.com/questions/16962