當前位置: 首頁>>技術教程>>正文


如何在Ubuntu上找回sudo?

, , , ,

問題描述

我已經做到了:

sudo chown -R myname /usr/

現在由於這個錯誤,我無法使用sudo命令:

sudo: must be setuid root

正如我所讀,這意味著該文件/usr/bin/sudo的所有者不是根目錄。現在是我的用戶了,因為/usr文件夾中的菜單。

人們建議在許多論壇和博客上以root用戶身份執行此操作:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

…但是問題是我需要以root用戶身份登錄,但我不能這樣做,因為如果我在終端中寫入su,則密碼錯誤(實際上,我使用的是我添加到用戶中的密碼):

$ su
Password:
su: Authentication failure

那麽我可以取回sudo命令嗎?

編輯:我的Ubuntu在我的Mac OS X上的Paralells下。

最佳回答

如果您有一個類似的係統可以用作指南,以查看所有文件的正確所有權是什麽,那麽您可以啟動到救援模式,放到root shell,然後手動將正確的所有權恢複到所有文件。 /usr中的文件。

最快的方法可能是重新安裝操作係統或從備份還原。

在Ubuntu或類似版本中,默認情況下沒有root密碼(該帳戶已禁用),這就是為什麽您不能su的原因。

次佳回答

由於您已經獲得了授予根級訪問權限的唯一權限,因此您將需要當前軟件環境之外的一些幫助來解決此問題。

我建議最簡單的方法是使用發行版的chmod為您的發行版啟動LiveCD,安裝驅動器並更改文件權限。

您也可以嘗試啟動到single-user模式以獲取根shell。

請注意,通常,/usr/目錄中的所有內容都應為root所擁有,因此您應該能夠執行遞歸chown來修複發生的任何故障。 (編輯:顯然,每個@Gilles注釋在運行chown時都會破壞setuid和setgid位,因此一旦再次修複所有權,您將需要與現有係統進行手動比較以還原所有這些。)

但是,非常少的應該是4111。額外的權限是一種特殊權限,但是即使以用戶身份運行,它也可以以root用戶身份執行!僅sudo和少數幾個命令應設置此權限位。如果您最初沒有運行chmod,則可能根本不需要修複此問題,那麽所有權限都應該已經正確。在不知道所有權限應該是什麽的情況下,請勿運行大型chmod操作。

第三種回答

在Ubuntu恢複模式下,輸入以下命令。這已解決了我的問題。

mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart

希望這能解決您的問題。(或其他人的)

我在此blog post中找到了這個。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/8513.html,未經允許,請勿轉載。