2012-08-14 10 views
41

パスワードとしてパラメータを指定してsudoを実行して、スクリプトに使用できるようにします。私は試しましたパスワードとしてパスワードをパラメータとして使用する

sudo -S mypassword execute_command 

しかし成功しません。助言がありますか?

+0

"root"でスクリプトが実行されているかどうかを確認するだけです。パスワードをエコーするのは悪いですが、それは歴史の中で発見されます... – kbdjockey

+0

'sudo'を適切に設定すると、そのような不正なハックを避けるために、特定のプログラム/ユーザ/グループのパスワードを尋ねることはありません。 – rush

答えて

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

私のコマンドの引数がある場合、これは動作しません。例えば。 'echo -e"あなたのパスワード\ n "| sudo -S "run -x" ' 'sudo:run -x:command not found'と表示されます。どのようにこれを回避するための任意のアイデアですか? – Bee

+0

@Bhathiyaは単純に引用符を使用しません。例: echo -e "YOURPASSWORD \ n" | sudo -S ls -l/root – matteomattei

+0

素晴らしい、ありがとう... – Bee

99

-Sスイッチを使用すると、sudoはSTDINからパスワードを読み取ります。これはしかし、ユーザーがルートの場合、このようなチェックなどのコマンドの一部としてパスワードを渡す伴わない他者による提案は、おそらくある須藤

にパスワードを渡すために

echo mypassword | sudo -S command 

を行うことができることを意味しますセキュリティ上の理由から

+0

働いて、多くの多くのありがとう!! – normalUser

+0

私の一日を救い、多くの感謝!!! – AdrianES

+0

それを専用のフォルダに入れて、フォルダと実行可能なフォルダの両方に実行権限を与える方法は? 'sudo chmod -R 0100 myScriptFolder'?それはセキュリティの問題を解決しないだろうか? – Shule

34

のためのより良いアイデアそれがルートとしてsudoと実行を必要としないように、あなたは(あなたがスクリプトでrootのパスワードを記述する必要はありません)あなたのスクリプトのsビットを設定することができます。

sudo chmod +s myscript 
+0

+1。これは、他の方法よりも優れています(さらに安全です)。 – Burkhard

+1

スティッキービットは悪い練習ですか? – kbdjockey

+0

@kbdjockey - '+ s'はsetuidビットです。 '+ t'はスティッキービットです。 –

2

1つのオプションは、sudoに-Aフラグを使用することです。これにより、パスワードを尋ねるプログラムが実行されます。尋ねるのではなく、パスワードを吐き出してプログラムを続けるスクリプトを作成することができます。

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

関連する問題