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

  • Динамическая конфигурация пользователя для git с помощью сценария-оболочки?
  • Безопасное хранение необработанных изображений на USB-накопителях
  • Изменит ли пароль пароль какого-либо пользователя и пароль sudo?
  • mac terminal - как сделать каталог требует SUDO-доступа, чтобы удалить его?
  • Как вы обрабатываете всю команду как sudo, которая включает перенаправление или конвейер?
  • Как установить vim в качестве редактора по умолчанию, когда я sudo?
  • В чем разница между sudo su и just su?
  • Как я могу имитировать `sudo su - user` в скрипте?
  • One Solution collect form web for “Разрешить www-data выполнять определенные команды”

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

    Interesting Posts

    Пользовательское заполнение bash с каталогами и фиксированным набором

    Как установить команду grub для других дистрибутивов на Ubuntu

    grepping фиксированная строка в начале строки

    Возможно ли записывать звук непосредственно на оптический дисковод компьютера?

    Как передать несколько команд через pssh и несколько xterms

    vi: переместить строку на 4 байта

    Где KDE 4 хранит свои быстрые клавиши?

    Почему root не ограничен pam

    Как переключиться на другой дистрибутив Linux и сохранить данные?

    Как отключить SMTP Auth Plain для James-2.3.2. на Slackware 14.0?

    ls для строки cut -f не работает

    Как использовать VLC для создания эффекта видеостены

    Как исправить странное приглашение bash на сервере Debian (Squeeze)?

    Как выполнить замену на месте, которая создает только резервные копии файлов, которые были изменены?

    Предотвращение сценария, изгоняющего системные ресурсы и сбой всей системы

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