Разрешить www-data выполнять определенные команды

Мне нужен PHP-скрипт для выполнения git pull но я недостаточно наивен, чтобы дать ему разрешения на git . Я обернул git pull в сценарии, для которого имеются разрешения для www-data , но я не уверен, как предоставить разрешения на скрипт для git :

 $ sudo tail -n1 /etc/sudoers www-data ALL=(ALL) NOPASSWD: /home/php-scripts/git-pull $ cat /home/php-scripts/git-pull #!/bin/bash /usr/bin/git pull $ ls -la /home | grep php-scripts drwxr-xr-x 2 ubuntu ubuntu 4096 Sep 3 09:26 php-scripts $ ls -la /home/php-scripts/git-pull -rwxrwxr-x 1 ubuntu ubuntu 30 Sep 3 08:44 /home/php-scripts/git-pull $ cat /var/www/public_html/git-wrapper.php <?php $output = array(); $value = 0; exec("/home/php-scripts/git-pull", $output, $value); echo "<pre>"; echo "Return Value: {$value}\n"; foreach ( $output as $o) { echo $o."\n"; } ?> 

Обратите внимание, что /var/www/public_html/ фактически является репозиторием git. Я часто выполняю git pull в этом каталоге из CLI. Однако, когда я вызываю этот скрипт в веб-браузере, я вижу, что файлы не обновлялись с помощью git pull и в браузер выводится следующее:

 Return Value: 1 

Это на сервере Ubuntu 12.04 с Git 1.7.9.5. Удаленный репозиторий находится на одном сервере.

Ваш скрипт работает под www-data:www-data я полагаю. Вы должны запустить git pull с пользователем, у которого есть разрешение на запись в ваш клонированный репозиторий. Вы настроили sudo , но вы не называете его нигде, что не имеет большого смысла (не говоря, что вам нужно это делать вообще). Проверьте, под каким пользователем вы работаете, а затем переключитесь на соответствующий, если необходимо, и соответствующим образом настройте разрешения для вашего клонированного репозитория.