Предоставление PHP разрешения на выполнение requestа git pull

Я хотел бы разрешить PHP выполнять команду Git pull. Но есть проблемы с пользователем и разрешениями. Как вы решили проблему?

PHP работает как userские www-данные. Поэтому я изменил владельца / группу directoryа .git на www-data ( chown www-data:www-data -R .git ). Как выясняется позже, www-data не имеет keyей SSH. Это хорошая идея дать ему один? Если да, где разместить? Или можно разрешить использовать конкретный key.

С наилучшими пожеланиями, Бернд

3 Solutions collect form web for “Предоставление PHP разрешения на выполнение requestа git pull”

Как часто вам приходится тянуть? Вы можете сделать cronjob (каждые 30 минут или около того) для вашего пользователя git, который проверяет определенный file. Если этот file имеет 1 или в нем, он делает тягу. Вы можете предоставить пользователю git и пользователю www-data доступ к этому fileу. PHP записывает 1 в file -> cronjob (запись crontab пользователя git) проверяет, находится ли 1 в fileе -> cronjob очищает 1 -> git, делает pull -> и т. Д. Это безопасный способ с небольшой задержкой (цикл cronjob). PS: не забыл очистить 1.

Если бы это был я, я бы сделал примерно то же самое, но я бы выполнил задание cron как root или другое использование в системе, имеющей доступ к оболочке. Я думаю, что главная причина, по которой www-data не может ничего сделать, – это отсутствие доступа к оболочке. Точно так же, как DrDol сказал, что time от времени выполняйте задание cron, которое сделает git pull, не стесняйтесь перезаписывать свое последнее притяжение новым, если вы получаете ошибки, потому что ur делает request страницы в середине вытягивания, лучше всего, чтобы каждое нажатие попало в папку, а затем эту папку переименовали в папку, с которой работает www-data, сразу после того, как эта папка переименована в другое, а затем удалена после того, как новый рабочий directory был переименован.

Я бы предложил вам предоставить пользователю www-data свою собственную копию git repo, и это собственный SSH-key. Затем вы можете использовать Gitolite (или аналогичный), чтобы обеспечить доступ к репо только для чтения. Предоставление доступа к WWW-данным к вашему основному репо не является отличной идеей.

  • Разделить трафик на несколько serverов за одним IP-адресом
  • Различия в пути для Subversion для svn и svn + ssh
  • Windows Remote desktop over ssh путем шпатлевки
  • Удаленные подkeyения Сроки выхода на SSH / HTTP в параллельном режиме из нескольких мест, но не PING, почему?
  • Как автоматически запускать исходящее SSH-connection на serverе, когда внутренний клиент подkeyается к этому serverу
  • Как отkeyить sftp для некоторых пользователей, но save ssh вkeyен?
  • Amazon EC2 запрашивает пароль root в SSH
  • Проблема с выполнением команд без пароля ssh
  • Как изменить порт sshd на Mac OS X?
  • SSH-authentication с использованием пары открытого и закрытого keyей
  • Условный proxy-controller в ~ / .ssh / config?
  • Interesting Posts

    IPSec VPN на Vista

    Не удается запустить службу SQL Server. Необходимо создать tempdb на новом диске

    Подkeyение к удаленному SQL Server с помощью Management Studio

    Как предотвратить веб-website на моем serverе, вызвавший сбои всего serverа

    Какую лицензию Windows 2008 я должен купить для виртуализации на Vmware?

    Является ли IIS «взятым во времени» перспективным или обратным взглядом?

    Как клонировать раздел восстановления Windows XP

    Как я могу автоматически подkeyать SQL Server Management Studio 2008 к моим экземплярам?

    RHEL 6 Имеет проблемы с отправкой порта 80 в порт 8080

    Postfix отправляет электронную почту спаму (gmail, hotmail)

    Потеря пакетов Xen PV

    Как диагностировать удаленный порт SSH вперед не работает

    Один диск не удалось в моем массиве RAID 1 + 0, могу ли я заменить его, не теряя данные? [дубликат]

    Перенаправить на file Maintenance с .htaccess

    Apache не соблюдает директиву ServerName для определенного websiteа