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

  • Ошибка при запуске `shutdown -h now`
  • существует «двухфакторная аутентификация» для sudo, если не так, как это сделать?
  • Centos: сценарий Adduser / Passwd / Sudoer
  • useradd в CentOS с домашним каталогом и привилегиями sudo
  • Отключить кеширование корневого пароля
  • Что произошло после sudo -s
  • Предотвращение просмотра пользователями других пользователей
  • Как я могу работать как другой пользователь?
  • One Solution collect form web for “Разрешить www-data выполнять определенные команды”

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

    Interesting Posts

    Почему я не могу передать файл через wget (FTP) с помощью функции exec () в PHP?

    Невозможно переписать команду «trap» для SIGTSTP, SIGTTIN и SIGTTOU

    Сопоставьте блок-устройство Linux VM с его файлом vmdk в хранилище данных vmware

    Подстановочные знаки: как я могу перечислить файлы, заканчивающиеся на `.txt`, только без использования символа точки?

    Трубопровод находит результаты в другой команде

    sed / PATTERN / SUB / $ VAR?

    Корень не может chmod?

    Вход / выход на Ubuntu 14.04

    Где «экспорт var = значение» недоступен?

    Найти последнее появление строки в нескольких файлах

    хром (хром) не загружается домашняя страница автоматически

    Возможно ли двойная загрузка двух дистрибутивов Linux и разделение подкачки?

    Что такое пересылка порта ssh и какая разница между локальной и удаленной пересылкой портов

    Разделение имен переменных из строк вывода без пробелов

    Как разработать приложение Windows Forms с помощью MonoDevelop на Ubuntu 16.04?

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