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

One Solution collect form web for “Разрешить www-data выполнять определенные команды”

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

  • Поиск пароля root
  • pam_unix (sudo: auth): auth не смог идентифицировать пароль для
  • Что делать, если владелец / usr / bin / * изменяется на non-root?
  • bash syntax - команда обертывания внутри sudo :: tail logs до тех пор, пока строка не будет найдена с таймаутом с использованием Terraform
  • Как обычный пользователь может запускать задачу root cron немедленно, без задержки?
  • Будет ли я запрашиваться пароль sudo второй раз?
  • Безопасны ли sudo и gksudo?
  • Есть ли инструмент, чтобы узнать общее состояние машины?
  • Как изменить права на файлы / каталоги на установленном каталоге nfs, поэтому я обращаюсь к файлам как пользователь?
  • Как ограничить административные привилегии различными файлами конфигурации?
  • Установка пароля root и sudo -i
  • Linux и Unix - лучшая ОС в мире.