Linux

為什麼我不能通過 su 成為 root?

  • December 28, 2019

為什麼不起作用,su但起作用sudo -i?當我想通過 成為 root 時su,系統不接受我的密碼,但通過sudo -i它可以工作。

su: Authentication failure

設置/更改root密碼:

sudo passwd root

然後你就可以執行su命令了。

簡短答案可在 sudoers 手冊頁中找到(鍵入man sudoers以查看完整頁面):

Unlike su(1), when sudoers requires authentication, it validates
the invoking user's credentials, not the target user's (or root's)
credentials.

sudo要求您的密碼也是如此,並且su要求您輸入root密碼。

長答案

su表示更改使用者,如以該使用者身份啟動 shell。您可以指定哪個使用者,例如su someuser. 然後會提示您輸入someuser的密碼。如果不指定使用者,su則預設為 root 使用者。因此,當您鍵入時su,它要求輸入 root 密碼。

sudo意味著,以另一個使用者身份執行命令,並且sudo -i意味著,以另一個使用者身份執行登錄 shell。您可以指定哪個使用者,但如果不指定,則預設為 root。與其期望其他使用者的密碼,su不如sudo應用安全策略。預設的安全策略是檢查文件/etc/sudoers。該文件的預設版本包括:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

這意味著,如果使用者在sudo組中,它可以以任何使用者身份執行任何命令。如果sudo -i對您有用,可能是因為您自己的帳戶在 sudo 組中。但在sudo執行命令之前,它會再次詢問您的密碼——而不是 root 使用者的密碼。

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