2014-01-18 77 views
1

我有一個非常簡單的腳本,需要以su(root)身份運行而不使用密碼。visudo如何以root身份運行腳本,無需輸入密碼

腳本

#!/bin/bash 

cd /Applications/data_vis/ 
sudo chown -R Fabulous:admin . 

我已決定使用權限和visudo命令(8),以使人們有可能對上面的腳本與出密碼運行。

權限

sudo chown root:wheel take_ownership.sh 

sudo chmod 4755 take_ownership.sh 

從visudo命令文件中提取

# User privilege specification 
root ALL=(ALL) ALL 
%admin ALL=(ALL) ALL 
%Fabulous ALL=(ALL) NOPASSWD: /Applications/data_vis/take_ownership.sh, 
%ALL ALL=NOPASSWD: /Applications/data_vis/take_ownership.sh 

# Uncomment to allow people in group wheel to run all commands 
%wheel ALL=(ALL) ALL 

我已經嘗試了許多變化和很多在這個視線的問題。不過,我必須錯過一些東西,因爲它對我所缺少的或做錯的東西並不明顯。

歡迎提供任何實用的特定解決方案。我正在使用bash shell。

回答

0

sudo用於爲非root用戶授予幾個任務的root權限。

假設「take_ownership.sh」是腳本,其內容是在上面列出,所述 任務獲得根權限的加倍: 隨着腳本內須藤和由所有權 設定腳本SUID位,設定爲根:輪。

這不是必需的。

一般出於安全原因,要防止setuid腳本。因此,shell通常可能會阻止執行此類腳本。

該問題的另一個原因可能是/ Applications/data_vis /上的權限不足。 執行腳本的用戶(如果setuid位已被清除,如上面建議的 )。

減少腳本 須藤喬敦 - R的美妙:管理/應用/ data_vis

刪除setuid位。

以非root用戶身份執行該腳本。

如果失敗,請使用dmesg檢查內核條目。

此外從須藤手冊頁(Linux)的:

沒有簡單的方法來防止用戶獲得了根殼如果該用戶經由須藤允許 運行任意命令。另外,許多程序(如編輯器)允許用戶通過shell轉義運行命令,從而避免sudo的檢查。但是,在大多數系統中,可能使用 來防止sudoers(5)插件noexec功能的shell轉義。

通過sudo直接運行cd命令沒有意義,例如,,

$ sudo cd /usr/local/protected 

因爲當命令退出父進程(你的shell)仍然是相同的。請參閱實例部分以獲取更多信息,請致電 。

運行通過sudo shell腳本可以公開相同的核心有臭蟲使得setuid的shell在一些操作系統 腳本不安全的(如果你的操作系統有一個的/ dev/FD /目錄,setuid的shell腳本 通常是安全的)。

相關問題