當前位置: 首頁>>技術教程>>正文


ubuntu:讓用戶以root權限運行腳本

, , ,

問題描述

我有ubuntu 8.04,我想編寫一個bash腳本,它作為root運行,每個用戶都可以運行。

我自己可以做須藤。

我怎麽做?

澄清:我不想使用sudo進行操作,因為那樣的話,用戶將不得不輸入密碼。我隻希望他們以root身份運行腳本,也許是setuid,dunno。

最佳思路

如果這是正常的二進製文件,則可以通過運行setuid

# chmod u+s /path/to/binary

不幸的是,腳本不能設置為setuid。 (您可以,但是將被忽略)。這樣做的原因是腳本的第一行告訴OS在哪個解釋器下運行腳本。例如,如果您的腳本具有:

#!/bin/bash

您實際上最終會跑步

/bin/bash /path/to/script

顯然,您需要將解釋器設置為setuid,這將意味著所有腳本都將為setuid。這樣不好

您可以通過運行visudo將以下內容放在/etc /sudoers文件中來使用sudo進行此操作。

ALL ALL=NOPASSWD: /path/to/script

現在,任何用戶都可以運行

$ sudo /path/to/script

這樣,他們無需輸入密碼即可運行腳本。

還有一種不需要在命令中使用sudo的替代方法,它需要創建一個小的setuided二進製文件來執行腳本,但是每增加一個setuid二進製文件都會增加另一個潛在的安全問題。

次佳思路

我需要在/etc /sudoers的末尾插入該行:ALL ALL = NOPASSWD: <filename>顯然,以後的%admin ALL=(ALL) ALL覆蓋要求管理員用戶輸入密碼。

隻要腳本執行了確定的,無害的,允許的操作,並且如果任何參數的值都不會導致腳本行為異常,則允許該腳本以root用戶身份運行不會有安全問題。

但是有一個陷阱…

始終在命令和文件名中使用完整路徑。如果您在myrootscript中編寫類似echo Hello world!的內容,則可能有人會編寫~/bin/echo scriptmyrootscript會以root身份執行。

/bin/echo "Hoping this will keep you safe" 🙂

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/9820.html,未經允許,請勿轉載。