¿Cómo permitir la ejecución sin solicitar una contraseña con sudo?

15

Estoy escribiendo una aplicación Java donde necesito hacer una ejecución de línea de comando y obtener un resultado, pero cuando ejecuto el comando, me pide la contraseña de sudo. Hasta ahora lo intenté:

$ sudo -s
$ vim /etc/sudoers
# User privilege specification
root         ALL=(ALL:ALL) NOPASSWD: ALL
javauser     ALL=(ALL:ALL) NOPASSWD: ALL

:wq
$ 4 -r--r-----   1 root root     615 2011-10-26 09:23 sudoers

Una vez que ejecuto el comando, nuevamente pregunta "[javauser] contraseña para javauser:". Pero ya mencioné noPASSWD.

whoamivuelve alexy lo estoy agregando como esto en el sudoersarchivo

# User privilege specification
root    ALL=(ALL:ALL) ALL
alex ALL=NOPASSWD: ALL


# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Running sigue pidiéndome mi contraseña, ¿alguna idea?

muru
fuente
Parece que ya hay una pregunta muy similar: askubuntu.com/questions/39281/… - ¿Has probado la respuesta desde allí?
Sergey
Asegúrese de que en su código java use "sudo / absolute / path / to / command" en su llamada al sistema. Por cierto. por razones de seguridad, debe usar en sudo visudolugar de vimeditar el archivo sudoers. De esa manera, si comete un error, el programa le advierte al respecto.
con-f-use
Puede encontrar aquí lo que probé exactamente: gist.github.com/1315951

Respuestas:

28

Debe hacer lo siguiente, en el tipo de terminal sudo visudoy agregar una línea como esta al final del archivo que especifique los comandos que desea ejecutar sin escribir la contraseña de sudo (le sugiero que use cada comando que desee usar en el programa y no solo permite que todos los programas sean ejecutados por esto)

<yourusername> ALL=NOPASSWD: <command1>, <command2>

Ahora puede ejecutar los comandos especificados sin contraseña siempre que escriba ese comando con sudo.

es decir: supongamos que desea ejecutar shutdown -r nowsin tener que escribir sudo contraseña cada vez y su nombre de usuario es 'joedoe'

  1. escribir sudo visudoen una terminal

  2. Agregue joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r nowcomo una nueva línea al final del archivo , use rutas absolutas al programa que está tratando de usar.

  3. en su programa, puede usarlo sudo shutdown -r nowsin tener que escribir la contraseña de sudo.

Puede encontrar la ruta absoluta a un programa utilizando which <program name>un terminal.

Es un truco muy sucio que deja a su sistema abierto a otros peligros, pero supongo que sabe lo que está haciendo y quiere esto.

Editar

Realmente necesita asegurarse de que las permiciones que está configurando están al final del archivo para que los permisos de los grupos no sobrescriban nada.

Bruno Pereira
fuente
Parece que ya lo hizo.
con-f-use
Si ya lo hizo, ¿por qué le está explicando que debe usar sudo visudoy no vimeditar el archivo sudoers? Si él hiciera esto, funcionaría.
Bruno Pereira
1
@goOgle, ¿está escribiendo sudofrente al comando dentro de su código? debe hacerlo incluso si forzó nopasswd en el archivo sudoers. es decir: uso sudo <command>no solo <command>.
Bruno Pereira
1
Para mí cmd = "whoami" regresa brunoy cmd = "sudo whoami"regresaroot
Bruno Pereira
3
¡Lo encontré! Puede reproducir esto si mi línea no está del final al final del sudoersarchivo. Después de la asignación de grupos, etc. ¡Realmente la última línea! ¡Mueva la línea para ser el último en el archivo! (espero que sea esto).
Bruno Pereira