此 sudo 規則是否僅允許使用者更新系統?

此 sudo 規則是否僅允許使用者更新系統?

我想設計一個 sudo 規則,允許用戶ricardo使用 sudo 更新系統aptitude,但阻止他使用 sudo 運行任何其他命令(他是一個有問題的用戶)。我遺漏了這條規則中的任何陷阱嗎?

ricardo  ALL=(root) /usr/bin/aptitude

里卡多只使用aptitude,不使用apt-get。另外,我目前沒有在任何地方安裝 Ubuntu,所以我知道這/usr/bin/aptitude可能不是允許的正確檔案。

如果這個規則有缺陷,我該如何改進?

答案1

該命令將限制用戶aptitude除了更新儲存庫快取和執行系統安全性升級之外進行任何操作。

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade

類似的命令將允許用戶執行完整升級,但僅此而已:

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude full-upgrade

aptitude 的文檔 (10.04), safe-upgrade:

將已安裝的軟體套件升級至最新版本。除非未使用,否則不會刪除已安裝的軟體包

相比之下,full-upgrade

將已安裝的軟體包升級到最新版本,根據需要刪除或安裝軟體包。該命令不如 safe-upgrade 保守,因此更有可能執行不必要的操作。但是,它能夠升級安全升級無法升級的軟體包。

請根據您的最佳判斷來判斷應允許使用者運行的內容。如果您不確定,請使用第一條規則,該規則僅允許safe-upgrade.

請注意,如果您想允許用戶安裝軟體包(這大大降低了對安全性的任何好處,但只是假設),您需要在命令*後包含一個aptitude,即

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade, /usr/bin/aptitude install *

否則,您將收到一條錯誤訊息,指出ricardo不允許使用者執行該命令/usr/bin/aptitude install <package_name>

答案2

您可以使用它sudo -l來查看允許使用者運行哪些命令。例如,要查看 ricardo 可以運行哪些命令:

sudo -ll -U ricardo

看看他是否可以運行 aptitude,

sudo -ll -U ricardo /usr/bin/aptitude

這將列印由 sudo 擴展的命令名稱,或者如果不允許使用者使用該命令,則以代碼 1 退出。

這應該適用於任何最新的基於 Debian 的系統供您測試;該語法不是 Ubuntu 特定的。

來源:曼須藤

答案3

我其實什麼也看不到錯誤的與 sudoers 行。不幸的是,我並沒有sudo過多地修改 的配置設置,所以在這種情況下,我的建議可能不可靠。幸運的是,我所要做的就是給你一條我知道是安全的線:

ricardo ALL=/usr/bin/aptitude

aptitude只要 ricardo 不是啟用 sudo 的群組(例如sudo或 )admin的成員,此行就保證只讓 ricardo 以 root 身分執行。

來源:在 Ubuntu 上調整和配置 Sudo 的 8 種方法 - How-to Geek

相關內容