web-dev-qa-db-ja.com

パスワードを求められることなく、引数をSudoとしてスクリプトを実行する

Javaには、bashスクリプトから呼び出している2つのプログラムがあります。

Java program1 arg ... arg
Sudo Java program2 arg ... arg

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

2
Marko Gulin

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

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 です。

2
Jacob Vlijm