
我知道我們可以使用命令作為超級/另一個用戶執行命令/腳本sudo
。但是是否有可能該sudo
實用程式本身不可用/被用戶刪除。如果是這樣,sudo
除了 之外還有什麼替代方案su
?另外,dosudo
和su
服務於相同的目的嗎?
答案1
“sudo”允許您以任何使用者身分啟動任何程式。它是“setuid root”,因為程式本身需要 root 權限才能執行此操作。 sudo 的強大之處在於您可以輕鬆配置誰可以做什麼。您可以允許使用者使用 sudo 執行 nmap(且僅限 nmap)。
「su」允許您以任何使用者身分啟動 shell。當您啟動 shell 時,顯然可以啟動任何其他程式。因此更危險;在管理良好的系統上,su
存取通常會停用,但sudo
可能對不同的程式可用。
使用上述兩個程序的原因是問責制。 Sudo 記錄發出的所有請求。因此,管理員可以輕鬆追蹤使用者使用 root 權限所做的事情。如果您授予對 shell 的存取權限,使用者就可以做任何他/她喜歡的事情(這是一個「黑洞」)。 (當然,內核層級的高級日誌記錄會阻礙這一點)。
當然,這些程式也可以被標記setuid
。這會在執行二進位時更改其所有者的權限。如果您設法啟動setuid
eg 上的位元/bin/bash
並將其擁有者設為/bin/bash
to root
,則每次執行時您都將成為root /bin/bash
。
最後,實體存取機器將允許您做任何您喜歡的事情。您可以從隨身碟啟動並存取本機檔案系統。您甚至可以將引導程式設定為使用不同的init
進程,該進程立即以單一使用者模式啟動 shell(無需輸入密碼)。
答案2
似乎沒有人回答除了 su 之外是否存在 sudo 替代品的問題,因此您可能有興趣知道 sudo 網站實際上維護了 sudo 替代品清單:
此清單包括開源軟體和商業軟體。以下是目前列出的開源 sudo 替代方案:
-
- 現在解散了?參考:SUS:用於分發 Unix 超級使用者權限的物件參考模型
也就是說,我從未使用過任何這些替代方案,也沒有在任何其他情況下見過或聽說過它們。看起來至少其中一些是實驗性的、失效的或不受支援的。我得到的印像是,sudo
這su
是城裡唯一真正的遊戲。
答案3
以 root 身分登入(如果您的 tty 允許)或重新啟動電腦並在命令列上使用 init=/bin/bash 登入以恢復所需的功能。
我指出只有 root 才能刪除 sudo。
sudo 和 su 有相似但不同的用途。 「sudo」允許您使用其他人的權限執行某些操作,而「su」則允許您「成為」該使用者並讓您像他們一樣行事。
答案4
如果機器已openssh-server
安裝,則替代方案sudo
可能是:
ssh root@localhost ..command.. ..goes.. ..here..
如果它還沒有被禁用,那麼su
就像你提到的:
su - root -c "..command.. ..goes.. ..here.."