2012-08-14 53 views
41

我想以我的密碼作爲參數運行sudo,以便我可以將它用於腳本。我試過使用帶密碼的sudo作爲參數

sudo -S mypassword execute_command 

但沒有任何成功。有什麼建議麼?

+0

你應該檢查腳本是否由「root」運行。回顯密碼是不好的,它會在歷史記錄中找到...... – kbdjockey 2012-08-14 15:10:26

+0

正確配置'sudo'好得多,它不會要求某些程序/用戶/組的密碼,以避免這種骯髒的黑客入侵。 – rush 2012-08-14 15:15:20

回答

16
echo -e "YOURPASSWORD\n" | sudo -S yourcommand 
+0

當我對我的命令有一個參數時,這不起作用。例如。 'echo -e「YOURPASSWORD \ n」| sudo -S「運行-x」'。它說'sudo:run -x:command not found'。任何想法如何解決這個問題? – Bee 2017-10-18 08:00:02

+0

@Bhathiya根本不使用「引號」,例如: echo -e「YOURPASSWORD \ n」| sudo -S ls -l/root – matteomattei 2017-10-19 08:20:36

+0

非常好,謝謝... – Bee 2017-10-19 10:02:04

99

-S開關讓sudo從STDIN讀取密碼。這意味着你可以做

echo mypassword | sudo -S command 

通過密碼須藤

然而,別人的建議如果用戶是根本不涉及傳遞密碼作爲命令的一部分,如檢查有可能出於安全考慮,更好的想法

+0

工作,很多很多謝謝! – normalUser 2014-10-16 06:37:09

+0

救了我一天,非常感謝! – AdrianES 2015-07-29 14:24:27

+0

如何把它放在一個專用的文件夾給它和文件夾執行權限:'sudo chmod -R 0100 myScriptFolder'?這不會解決安全問題嗎(如果沒有人使用你的電腦作爲root用戶,但你)? – Shule 2015-09-11 11:46:29

34

您可以設置s位爲你的腳本,以便它不需要sudo,並以root身份運行(你不需要寫劇本你的root密碼):

sudo chmod +s myscript 
+0

+1。這比其他方法更好(也更安全)。 – Burkhard 2012-08-14 15:11:10

+1

粘點是不好的做法不行? – kbdjockey 2012-08-14 15:11:52

+0

@kbdjockey - '+ s'是setuid位。 '+ t'是粘性的。 – 2012-08-14 15:32:59

2

一個選項是使用-A標誌來sudo。這會運行一個程序來詢問密碼。而不是問,你可以有一個腳本,只是吐出密碼,以便程序可以繼續。

0
# Make sure only root can run our script 
if [ "$(id -u)" != "0" ]; then 
    echo "This script must be run as root" 1>&2 
    exit 1 
fi 
+0

這不回答OP的問題。 – codeforester 2018-02-02 22:09:36