У меня есть две программы на Java, которые я вызываю из скрипта bash:
java program1 arg ... arg
sudo java program2 arg ... arg
Я хочу запустить program2 как sudo без запроса пароля. Я знаю о файле sudoers, но не уверен, как настроить его для запуска программ Java как sudo без запроса пароля. Есть мысли?
решение1
Использование подстановочных знаков в файле sudoers
В sudoers
файле выможетиспользуйте подстановочные знаки (*), тем самым создавая возможность запуска скрипта с аргументами.
Пример
Я протестировал его с помощью шокирующе простого скрипта python. В sudoers
файле мне пришлось использовать абсолютный путь к python
: /usr/bin/python
в строке файла sudoers:
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
может бытьВот этот.