允許受限使用者執行需要管理員權限的腳本的好方法是什麼?

允許受限使用者執行需要管理員權限的腳本的好方法是什麼?

我有一個腳本,我希望我的一些用戶能夠運行該腳本,該腳本需要管理員。當然我不想給他們管理員權限。如何允許該腳本以安全的方式運作?

更新:這是Ubuntu 9.10系統。

答案1

只需使用須藤即可。您需要在 中配置 sudo /etc/sudoers,如下所示:

fred ALL = (root) NOPASSWD: /path/to/command

將 fred 替換為使用者名,或使用 %group 作為群組。如果您刪除 NOPASSWD: 選項,那麼每次都會提示他們輸入密碼。

腳本上的 setuid 不安全且無法在 Linux 上運作。

答案2

sudo 和 SUID 都是非常沒有安全感。擺脫其中任何一個都是可能的,而且很容易,這取決於腳本語言。 SUID 是迄今為止最糟糕的,如果這樣做的話,一些腳本語言甚至無法運行。

我有一篇關於如何安全地做到這一點的部落格文章,這是我第一次寫的以 root 身分運行 Nagios 檢查插件但在這裡完全適用。有一個小型 C 程式(多年來一直在 Linux 管理領域流傳),它只是充當腳本的包裝器。您只需編輯 C 程式來源以包含腳本的完整路徑,編譯它,然後設定該 SUID(或授予 sudo 存取權限)。來源在我的網站:setuid-prog.c

以 root 身分執行腳本(對於非 root 使用者)的固有問題是,在許多語言中,使用各種技術(從不良輸入檢查到溢位),有可能突破正在執行的腳本並獲得完全的 root 存取權。許多老 Unix 專家建議只寫一個 C 程式來完成你需要的事情 - 但話又說回來,當你需要能夠熟練地編寫C語言。

答案3

在哪個作業系統上?

在 Linux/Unix 上,您可以允許他們透過 sudo 運行它。可以修改 /etc/sudoers 檔案以向某些 ID(使用者)授予對指定命令的特定權限。

或者,您可以對其設定 SUID 位,並將腳本變更為由特權使用者擁有。這會將腳本設定為以該使用者身分執行,而不是以執行它的使用者身分執行。但是,這適用於所有運行它的用戶。

答案4

有兩種方法:

最好的方法是設定 SUID 位元:chown root yourscript; chmod a+s yourscript

sudo或者,您可以透過運行visudo並按照說明操作,授予他們使用 修改它的權限。然而,這是不必要的,因為這是透過運行sudo具有 SUID 位元的 來實現的。

相關內容