Permitir ao usuário 'git' executar 'git pull' como 'www-data' via sudo

8

Eu gostaria de permitir que o git rode 'git pull' como usuário 'www-data'. Tanto quanto eu entendo     git ALL = (www-data) git pull em / etc / sudoers deve fazê-lo.

Infelizmente eu recebo um erro de sintaxe para esta linha e visudo Sintaxe destaca as quebras logo após o "-" em 'www-data'

Não é possível encontrar informações sobre proibido '-' em nomes de usuários do / etc / sudoers. Alguma dica?

    
por Ben 13.05.2011 / 13:37

2 respostas

5

Você precisa usar o nome completo do caminho para o comando 'git', as linhas seguintes não produzem erro de sintaxe no visudo e funcionam bem.

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

    
por 13.05.2011 / 13:56
7

Observe que estou usando o nome de usuário git , portanto, se você estiver usando gitosis ou qualquer outro nome de usuário, basta preencher o seu!

No console com o usuário root , execute este comando:

visudo

O editor "vi" será aberto. Adicione estas linhas:

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

Em resultado, o arquivo (que é aberto no editor "vi" chamando "visudo") deve ficar assim:

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

Em seguida, pressione CTRL + O para salvar o arquivo, pressione Enter para aceitar o nome do arquivo (bla bla bla) e pressione CTRL + X para fechar o editor "vi".

Voila! Agora o usuário do git pode executar comandos como usuário www-data :

sudo -u www-data git pull origin master
    
por 21.06.2012 / 19:38