Necesito sudo sin contraseña, para scripts. ¿Qué hice mal?

9

Estoy en el grupo sudo, de acuerdo:

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

En mis sudores parece que tengo la configuración adecuada:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

y es la última línea no comentada allí.

Pero cuando lo intento git pull, me pide que vuelva a escribir mi contraseña:

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

No es un problema cuando estoy conectado a la consola, pero es inaceptable en los scripts. Entonces, ¿cómo puedo permitir que cualquier persona en el grupo sudo git pull como www-data sin volver a escribir la contraseña?

Cuando pongo mi nombre directamente:

molot ALL=(ALL) NOPASSWD: ALL

esto funciona para mi. Pero, obviamente, no para usuarios marianos u otros del grupo sudo. Hasta donde entendí el manual , tanto los nombres de usuario como los de grupo deberían funcionar en el primer archivo.

Mołot
fuente
¿Puede usted no sudo -u www-data ./your_script.sh? ¿Cuál es el propósito del guión?
jimbobmcgee
@jimbobmcgee es un gancho git, así que no, no puedo anteponerle nada. Es llamado por el usuario que presionó los cambios de git y no encontré ninguna forma real de evitarlo.
Mołot
El primer campo (si mi comprensión rápida del sudoersformato de archivo es correcta) es el nombre de usuario del usuario que invoca. ¿Has intentado reemplazarlo con el comodín *o con el usuario con el que se ejecuta el git hook?
un CVn
@ MichaelKjörling como se indica aquí , debería ser posible escribir tanto usuarios como grupos en el primer campo. *No funciona. Poner mi nombre directamente funciona para mí ... pero no para otros usuarios en sudo group, obviamente.
Mołot
@ MichaelKjörling gracias, su comentario me hizo buscar caracteres especiales y me permitió encontrar una respuesta: D Editar: eliminó la respuesta propia y aceptó la respuesta de terceros desde el mismo momento.
Mołot

Respuestas:

19

Parece que tienes la línea relevante en tus sudoers que falta un personaje:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

coincide con un usuario llamado 'sudo'. Para 'todos los usuarios en el grupo sudo' debería ser:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

(tenga en cuenta el signo% al principio).

rafalmp
fuente
1
Ah, para que de lo que el %en %wheelsignificaba.
nikhil
1

sudo visudo

Luego, suponiendo que molotsea ​​su nombre de usuario, vaya al final del archivo y:

molot ALL=(ALL) NOPASSWD: ALL

Esto debería funcionar, pero si no funciona, mantennos informados.

Jugurtha Hadjar
fuente
Esto funciona. Para mi. Pero, obviamente, no para marian o cualquier otro usuario en el grupo sudo.
Mołot
Luego cree alias de usuario ( User_Alias) y otorgue permiso para ejecutar comandos específicos como root ( Runas_Alias). No sé cómo está configurado su grupo, puede consultar el wiki de Sudoers help.ubuntu.com/community/Sudoers Es realmente conciso. Consulte la sección "Especificaciones del usuario", esto debería ayudar.
Jugurtha Hadjar