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
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?
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