Tengo dos programas en Java a los que llamo desde un script bash:
java program1 arg ... arg
sudo java program2 arg ... arg
Quiero ejecutar program2 como sudo sin que me pidan la contraseña. Conozco el archivo sudoers, pero no estoy seguro de cómo configurarlo para ejecutar programas java como sudo sin que me soliciten una contraseña. ¿Alguna idea?
Respuesta1
Usando comodines en el archivo sudoers
En el sudoers
archivo, ustedpoderutilice comodines (*), creando así la posibilidad de ejecutar un script con argumentos.
Un ejemplo
Lo probé con un script en Python sorprendentemente simple. En el sudoers
archivo tuve que usar la ruta absoluta a python
: /usr/bin/python
en la línea del archivo sudoers:
jacob ALL=NOPASSWD: /usr/bin/python /home/jacob/Bureaublad/pscript_1.py*
Entonces mi código (script de Python) fue:
#!/usr/bin/python
import sys
s1 = sys.argv[1]
s2 = sys.argv[2]
print(s1)
print(s2)
Luego ejecuté en una terminal:
~$ sudo python '/home/jacob/Bureaublad/pscript_1.py' monkey banana
monkey
banana
sin pedirme mi contraseña.
De manera similar, debería poder lograr lo que desea agregando la siguiente línea al sudoers
archivo:
<your_username> ALL=NOPASSWD: /path/to/java <your_script>*
Y ejecute el script mediante:
sudo java <script> <args>
y no se le pedirá su contraseña.
Más información
Una fuente interesante sobre cómo utilizar el sudoers
archivo podría serÉste.