Permitir al usuario 'git' ejecutar 'git pull' como 'www-data' a través de sudo

12

Me gustaría permitir que git ejecute 'git pull' como usuario 'www-data'. Por lo que entiendo, git ALL = (www-data) git pull / etc / sudoers debería hacerlo.

Lamentablemente, aparece un error de sintaxis para esta línea y el resaltado de sintaxis visudo se rompe justo después de "-" en 'www-data'

No se puede encontrar información sobre '-' prohibido en los nombres de usuario / etc / sudoers. ¿Algun consejo?

Ben
fuente

Respuestas:

11

Debe usar el nombre de ruta completo para el comando 'git', las siguientes líneas no producen un error de sintaxis en visudo y funcionan bien.

git ALL = (www-data) /usr/bin/git pull

AlexD
fuente
66
@Ben y no compartiste?
agrublev
9

Tenga en cuenta que estoy usando el nombre de usuario git , por lo tanto, si está usando gitosis o cualquier otro nombre de usuario, ¡simplemente complete el suyo!

En la consola con usuario root, ejecute este comando:

visudo

Se abrirá el editor "vi". Agregue estas líneas:

Defaults:git    !authenticate
git ALL=(www-data) ALL

En consecuencia, el archivo (que se abre en el editor "vi" llamando a "visudo") debería verse así:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset
Defaults:git    !authenticate

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL
git ALL=(www-data) ALL


# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

Luego presione CTRL + O para guardar el archivo, luego presione Entrar para aceptar el nombre de archivo (bla bla bla), luego presione CTRL + X para cerrar el editor "vi".

Voila! Ahora git user puede ejecutar comandos como usuario de www-data :

sudo -u www-data git pull origin master
Taai
fuente