2011-03-07 62 views
0

我需要執行一個以root身份運行所需的命令。如何在bash腳本中傳遞密碼?

我讀了一些關於後使用硬編碼密碼腳本可能是不安全的,但實際上我不在乎,因爲我提供給用戶root密碼反正。這是一個剝離的系統,只有兩個用戶:客戶端和root用戶,所以請避免警告我有關安全問題,繼續並提供一個快速和骯髒的解決方案。

對於這個bash腳本我用蘇需要 獲得儘可能超級用戶,然後 「我的命令」, 然後註銷。

我不想終端提示輸入密碼我自己,而不是閱讀,我在劇本提供某處密碼,然後運行命令。優先不要提示用戶輸入任何信息。

或者,也許我可以安裝sudo的,但有沒有可能不使用密碼(編輯sudoers文件或東西)的任何提示符下運行命令? 使用期望怎麼樣?我忘了說這也是一個便攜式SO,用於U盤(也許以後也用於CDLive),如你所知,在這種類型的發行版中,如果用戶需要,可以提供一個root密碼。前面提到的命令是一些應用程序安裝的擴展包,只有root纔有權執行這樣的命令(我不得不說它不是apt-get安裝或rpm命令,所以不用擔心這一點)。

+1

您可以通過描述你所需要的腳本實際上做你更好的答案。繞過類似UNIX的訪問控制基礎設施是UNIX相當於goto語句:如果你想使用一個,它通常意味着它的時間來從問題退一步一點,看看如果你能做到你想要什麼做得更優雅。 – Ori 2011-03-07 03:55:20

回答

1

如果你想有一個命令是可運行的,沒有密碼,設置具體命令將在/etc/sudoers文件,沒有密碼,可運行(限制參數只有你希望允許特定的人,如果你使用的情況下,允許該限制)。

這是因爲設置NOPASSWD:標誌相關的sudoers條目一樣簡單。

如果你真的,真的不關心安全性,也可能是這樣簡單:

%admin ALL=(ALL) NOPASSWD: ALL 

(把須藤能力的用戶admin UNIX組後) ...或者,如果你護理,你可以做一些具體的事情:

someuser ALL = NOPASSWD: /usr/local/sbin/my_admin_command 

請注意,如果這些命令將在沒有用戶存在的情況下運行,它們也可能沒有分配TTY;在這種情況下,你必須確保你的sudoers文件不包含(經常目前按默認值)行:

Defaults requiretty 

......或者說這個默認的效果被丟棄專由行賦予權限。