Autoriser l'utilisateur 'git' à exécuter 'git pull' en tant que 'www-data' via sudo

12

Je voudrais autoriser git à exécuter 'git pull' en tant qu'utilisateur 'www-data'. Pour autant que je comprends git ALL = (www-data), git pull / etc / sudoers devrait le faire.

Malheureusement, j'obtiens une erreur de syntaxe pour cette ligne et la surbrillance de la syntaxe visudo se casse juste après le "-" dans 'www-data'

Impossible de trouver des informations concernant les «-» interdits dans les noms d'utilisateur / etc / sudoers. Des conseils?

Ben
la source

Réponses:

11

Vous devez utiliser le nom de chemin complet pour la commande 'git', les lignes suivantes ne produisent pas d'erreur de syntaxe dans visudo et fonctionnent très bien.

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

AlexD
la source
6
@Ben et vous n'avez pas partagé?
agrublev
9

Notez que j'utilise le nom d'utilisateur git , donc, si vous utilisez gitosis ou tout autre nom d'utilisateur, remplissez simplement le vôtre!

Dans la console avec l' utilisateur root, exécutez cette commande:

visudo

L'éditeur "vi" sera ouvert. Ajoutez ces lignes:

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

En conséquence, le fichier (qui est ouvert dans l'éditeur "vi" en appelant "visudo") devrait ressembler à ceci:

# /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

Appuyez ensuite sur CTRL + O pour enregistrer le fichier, puis appuyez sur Entrée pour accepter le nom de fichier (bla bla bla), puis appuyez sur CTRL + X pour fermer l'éditeur "vi".

Voila! Maintenant, git user peut exécuter des commandes en tant qu'utilisateur www-data :

sudo -u www-data git pull origin master
Taai
la source