Предоставление 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-данным к вашему основному репо не является отличной идеей.

  • не может ssh-server из другой страны
  • Управление множеством открытых sessionов ssh на serverах с идентификатором имени хоста
  • Разрешение SFTP отклонено, но SSH работает нормально
  • Вход в систему SSH занимает несколько минут
  • sshd больше не регистрируется после обновления на новом CentOS 7 Install
  • Внекорневой вход в EC2-экземпляр
  • Повесьте и сломайте трубку при перезагрузке через ssh
  • systemd: Не удалось сделать нас подрезкой: Недопустимый аргумент. SSH
  • SSH: несколько или один закрытый key?
  • SSH-туннель и Rsync через два proxy-serverа / брандмауэры
  • Как настроить ssh-клиент для открытия tmux по умолчанию только тогда, когда ssh вызывается без параметров?
  • Interesting Posts

    Dovecot и общие папки – как «подписаться» INBOX автоматически

    Изменение пароля root через скрипт завершается неудачно, но сообщает об успешности

    Как перенести первый server обмена на другой server обмена?

    Сервер Jenkins CI заполнил дисковое пространство

    Подkeyение к док-станции обслуживания контейнера AWS EC2 не выполняется

    Способы оценить, какой результат назначения сети является более коротким / более быстрым сетевым путем?

    Пакетный file и другие scripting в windows 2008 r2

    дескриптор fileа txt в lsof

    Можно ли назначить шаблон по умолчанию для каждого нового хоста в Zabbix?

    nginx: сохранение fileа fastcgi php в viewе fileа

    Лучший способ предотвратить server по умолчанию?

    Каков наилучший логарифмический ротатор для приложений Python wsgi?

    Как создать пользователя с доступом только для чтения через SSH к ограниченному поддереву папок?

    Ошибка с моим скриптом VB

    Не удается присоединиться к хосту Hyper-V к controllerу домена гостевой виртуальной машины