Запустить скрипт с аргументами как sudo без запроса пароля

Запустить скрипт с аргументами как sudo без запроса пароля

У меня есть две программы на 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может бытьВот этот.

Связанный контент