Ejecute un script con argumentos como sudo sin que se le solicite la contraseña

Ejecute un script con argumentos como sudo sin que se le solicite la contraseña

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 sudoersarchivo, 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 sudoersarchivo tuve que usar la ruta absoluta a python: /usr/bin/pythonen 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 sudoersarchivo:

<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 sudoersarchivo podría serÉste.

información relacionada