我在寫一個簡單的shell腳本,它需要一個root權限。如果您輸入sudo su
並使用終端,並且您編寫的密碼確實可用。 我要密碼傳遞給腳本文件,然後把它傳遞給系統成爲root例如:shell腳本:導航到根
pass= $1
navigateToRoot($pass)
我在寫一個簡單的shell腳本,它需要一個root權限。如果您輸入sudo su
並使用終端,並且您編寫的密碼確實可用。 我要密碼傳遞給腳本文件,然後把它傳遞給系統成爲root例如:shell腳本:導航到根
pass= $1
navigateToRoot($pass)
一個更好的辦法是:
chmod +s yourfile
chown root yourfile
通過設置setuid
位,該文件將作爲根(所有者)執行,而不必存儲或傳遞根密碼。
確保沒有其他人可以修改腳本
chmod o-w yourfile
看評論:所以這個答案是無效的
SETUID不能在Shell腳本工作。
基於對這個問題的評論,我假設你真的想要求用戶輸入密碼,在一些替代方式,而不是在一個文件中明文有你的密碼。您可以使用-A
標誌sudo
。從man sudo
:
通常情況下,如果須藤需要密碼,它會從目前的終端閱讀。如果指定了-A(askpass)選項,則會執行一個(可能爲 圖形)幫助程序來讀取用戶的密碼,並且 將密碼輸出到標準輸出。如果設置了SUDO_ASKPASS 環境變量,則它指定幫助程序 程序的路徑。否則,使用 sudoers(5)中的askpass選項指定的值。
你可以「T。如果可以的話,這將是一件可怕的事情。 – 2011-12-13 19:19:36
假設我想從另一個程序讀取它。來自某個應用程序的文本框,並將其傳遞給系統 – 2011-12-13 19:23:06