
我想阻止 sudo 用戶更改 root 的密碼。這怎麼可能?
答案1
如果您談論的是只允許運行您選擇列入白名單的一些特定命令的用戶 - 在確保它們不能用於實現您想要禁止的事情之後 - 那麼,拉曼賽洛帕爾 說,解決方案很簡單不是包括您不希望這些使用者能夠以 root 身分執行的任何命令。
特別是,用戶無需成為 root 即可運行passwd
命令來更改其自己的密碼,因此根據您的特定需求,您可能不需要授予它們運行的能力任何 passwd
以 root 身分使用sudo
.
但是,如果您正在尋找一種有效的方法來限制用戶的能力您允許誰運行任何命令作為根sudo
運行一些您認為危險的特定命令,那麼答案是沒有有效的方法來實現這一目標,您應該重新考慮是否應該向這些用戶授予您現在授予他們的權力。即使您禁止特定命令,可以以 root 身分執行除少數黑名單命令之外的任何命令的使用者sudo
也可以使用其他命令簡單地實現完全相同的目標。
'!' 的限制操作員
從命令中「減去」命令通常效果不佳全部使用 '
!
' 運算子。使用者可以透過將所需的命令複製到不同的名稱然後執行該命令來輕鬆規避此問題。例如:bill ALL = ALL, !SU, !SHELLS
並不能真正阻止帳單從運行中列出的命令 蘇或者貝殼因為他可以簡單地將這些命令複製到不同的名稱,或使用編輯器或其他程式的 shell 轉義。因此,此類限制最多應被視為建議性的(並透過政策強化)。
一般來說,如果使用者有 sudo全部沒有什麼可以阻止他們創建自己的程序,為他們提供根 shell(或製作自己的 shell 副本),而不管
!
用戶規範中的任何 ' ' 元素如何。
這是更一般原則的一個特例,即你不能賦予某人執行任務的能力隨意的系統中的行為,同時透過嘗試禁止某些狹隘的行為來有效地限制它們。至少你不能僅僅透過阻止來做到這一點共同機制用於執行它們的。他們總是能找到另一種方式,而且他們很可能會這樣做。他們可能會找到另一種方式即使是偶然,所以你可能無法透過這種方式有效地對抗他們的粗心。
此外,如果您希望有使用者管理系統,但您不信任他們會同意您的要求,不更改 root 密碼,那麼您真的在任何真正重要的方面信任他們嗎?你真的信任他們所有的事情嗎?其他他們擁有哪些能力,其中大多數更具破壞性?正如我在我的答案到是什麼阻止某人設定 root 密碼?關於管理 Ubuntu 系統(預設情況下,群組成員身分sudo
授予管理權力):
您是該小組的成員
sudo
。您可以刪除系統上的所有檔案。您可以將原始資料寫入硬碟,無法復原地覆寫其中的內容。您可以存取其他使用者的文件,即使他們設定了限制性權限。您可以將新韌體安裝到實體設備。您可以從影子資料庫中轉儲用戶的密碼並嘗試破解它們,或者只是重置它們。您可以安裝侵犯使用者隱私或破壞資料的惡意軟體,包括鍵盤記錄程式和勒索軟體。你可以用你的網路介面做一些非常奇怪的事情。您可以使系統錯誤地告知使用者其通訊的安全性。你可以掩蓋你的蹤跡。你可以把所有這些權力,以及我沒有列出的其他權力,交給那些會利用它們作惡的人。當談到濫用sudo
或 Polkit 時,那些是您應該關心的事情。確實,您不應該讓不受信任的人在無人監督的情況下進入您的房子,但原因並不是他們可以從裡面打開門並進入。*