Javaには、bashスクリプトから呼び出している2つのプログラムがあります。
Java program1 arg ... arg
Sudo Java program2 arg ... arg
パスワードを求められることなく、program2をSudoとして実行したい。私はsudoersファイルを知っていますが、パスワードを求められずにJavaプログラムをSudoとして実行するように設定する方法がわかりません。何かご意見は?
sudoers
ファイルでは、canでワイルドカード(*)を使用できるため、引数付きでスクリプトを実行する可能性が生まれます。
驚くほどシンプルな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
ファイルの使用方法に関する興味深い情報源は、 this one です。