パスワードを尋ねられずに sudo として引数を指定してスクリプトを実行する

パスワードを尋ねられずに sudo として引数を指定してスクリプトを実行する

私は、bash スクリプトから呼び出す Java プログラムを 2 つ持っています。

java program1 arg ... arg
sudo java program2 arg ... arg

パスワードを尋ねられることなく、program2 を sudo として実行したいです。sudoers ファイルは知っていますが、パスワードを尋ねられることなく、java プログラムを sudo として実行するように設定する方法がよくわかりません。何かご意見はありますか?

答え1

sudoers ファイルでワイルドカードを使用する

ファイルではsudoersできるワイルドカード (*) を使用すると、引数付きのスクリプトを実行できるようになります。

私は驚くほど単純な Python スクリプトでこれをテストしました。ファイルでは、sudoers ファイルの行に:sudoersへの絶対パスを使用する必要がありました。python/usr/bin/python

jacob ALL=NOPASSWD: /usr/bin/python /home/jacob/Bureaublad/pscript_1.py*

私の(Python スクリプト)コードは次のようになりました:

#!/usr/bin/python

import sys

s1 = sys.argv[1]
s2 = sys.argv[2]

print(s1)
print(s2)

次にターミナルで実行しました:

~$ sudo python '/home/jacob/Bureaublad/pscript_1.py' monkey banana
 monkey
 banana

パスワードを尋ねることなく。

同様に、ファイルに次の行を追加することで、目的を達成できるはずですsudoers

<your_username> ALL=NOPASSWD: /path/to/java <your_script>*

次のようにスクリプトを実行します。

sudo java <script> <args>

パスワードの入力は求められません。

詳しくは

ファイルの使い方に関する興味深い情報源としてsudoersは、これです

関連情報