2011-12-13 73 views
-3

我在寫一個簡單的shell腳本,它需要一個root權限。如果您輸入sudo su並使用終端,並且您編寫的密碼確實可用。 我要密碼傳遞給腳本文件,然後把它傳遞給系統成爲root例如:shell腳本:導航到根

pass= $1 
navigateToRoot($pass) 
+2

你可以「T。如果可以的話,這將是一件可怕的事情。 – 2011-12-13 19:19:36

+0

假設我想從另一個程序讀取它。來自某個應用程序的文本框,並將其傳遞給系統 – 2011-12-13 19:23:06

回答

2

一個更好的辦法是:

chmod +s yourfile 
chown root yourfile 

通過設置setuid位,該文件將作爲根(所有者)執行,而不必存儲或傳遞根密碼。

確保沒有其他人可以修改腳本

chmod o-w yourfile 

看評論:所以這個答案是無效的

SETUID不能在Shell腳本工作。

1

基於對這個問題的評論,我假設你真的想要求用戶輸入密碼,在一些替代方式,而不是在一個文件中明文有你的密碼。您可以使用-A標誌sudo。從man sudo

通常情況下,如果須藤需要密碼,它會從目前的終端閱讀。如果指定了-A(askpass)選項,則會執行一個(可能爲 圖形)幫助程序來讀取用戶的密碼,並且 將密碼輸出到標準輸出。如果設置了SUDO_ASKPASS 環境變量,則它指定幫助程序 程序的路徑。否則,使用 sudoers(5)中的askpass選項指定的值。

0

如果你想從一個腳本發送密碼,你需要能夠做到對tty -s奇怪的事情,例如像腳本語言expect(基於tcl,這是一種我非常不喜歡的腳本語言)。

但配置好sudo,或較少使用super命令,或者是一個二進制可執行文件是setuid和調用其它一些腳本(在C非常謹慎編碼),應該是足夠了...