J'ai deux programmes dans Java que j'appelle à partir d'un script bash:
Java program1 arg ... arg
Sudo Java program2 arg ... arg
Je veux exécuter program2 en tant que Sudo sans me demander un mot de passe. Je connais le fichier sudoers, mais je ne sais pas comment le configurer pour qu'il exécute des programmes Java en tant que Sudo sans demander de mot de passe. Des pensées?
Dans le fichier sudoers
, vous pouvez utiliser des caractères génériques (*), offrant ainsi la possibilité d'exécuter un script avec des arguments.
Je l'ai testé avec un script étonnamment simple python. Dans le fichier sudoers
, je devais utiliser le chemin absolu vers python
: /usr/bin/python
dans la ligne du fichier sudoers:
jacob ALL=NOPASSWD: /usr/bin/python /home/jacob/Bureaublad/pscript_1.py*
Ensuite, mon code (script python) était:
#!/usr/bin/python
import sys
s1 = sys.argv[1]
s2 = sys.argv[2]
print(s1)
print(s2)
Puis j'ai couru dans un terminal:
~$ Sudo python '/home/jacob/Bureaublad/pscript_1.py' monkey banana
monkey
banana
sans demander mon mot de passe.
De même, vous devriez pouvoir réaliser ce que vous voulez en ajoutant la ligne suivante au fichier sudoers
:
<your_username> ALL=NOPASSWD: /path/to/Java <your_script>*
Et lancez le script en:
Sudo Java <script> <args>
et votre mot de passe ne vous sera pas demandé.
Une source intéressante sur l'utilisation du fichier sudoers
pourrait être celui-ci .