Разрешить 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. Удаленный репозиторий находится на одном сервере.

  • Разрешение отклонено: запись правила udev в тестовый файл в /etc/udev/rules.d/
  • Почему LXC-create возвращает ошибку «sudo.conf должен быть 0»?
  • sudo с оригинальным профилем
  • Почему «$ sudo echo 'yo» работает, хотя эхо - это встроенная в оболочку функция?
  • как разрешить sudo fork bash вместо sh?
  • Почему у TurnKey Linux не установлено sudo по умолчанию, если вы никогда не должны входить в систему как root?
  • Почему пользователь не добавляется в список sudoers?
  • Что такое эквивалент sudo для FreeBSD?
  • One Solution collect form web for “Разрешить www-data выполнять определенные команды”

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

    Linux и Unix - лучшая ОС в мире.