2013-04-07 1 views
3

У меня есть настройка git локально и на моем сервере и создана «post-receive», так что, когда я нажимаю на живой сервер, он должен затем проверить в каталоге виртуальных хостов веб-сайта.Разрешения с Git Post-Receive

#!/bin/sh 
GIT_WORK_TREE=/var/www/domainname/public_html/ git checkout -f 

Однако, когда я пытаюсь сделать мой толчок, он выходит мастер успешно, но я получаю доступ запрещен ошибки при попытке создать эти файлы на сервере веб-сервера.

например. remote: error: unable to create file index.php (Permission denied)

Эти ошибки на самом деле имеют смысл для меня из-за того, как я настроил свой сервер. Я отключил доступ root и создал нового пользователя, который добавлен в sudoers через visudo. Затем я настроил SSH-ключи для этого пользователя. Я использую этого пользователя для вытеснения моих изменений git на сервер.

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

Какое решение? Создать другого пользователя с ключами SSH для подключения только для git, который имеет более высокие разрешения, или есть способ предоставить возможность получения сообщения sudo после получения?

Извинения за очень длинный вопрос, но хотелось быть абсолютно понятным с тем, что я сделал.

ответ

0

Если репо создан с помощью опции --shared (см «Change GIT repository to shared»), что позволит пользователям из же группы для доступа и записи.

Есть ли способ объединить этих разных пользователей в одной группе?
Немного как то, что упоминается в «Git unable to create file permission denied» той же группы.
Или доступ Суда, как объяснен в комментариях this question, изменение sudoers:

git ALL = (root) NOPASSWD: /usr/local/sbin/prgetsimpleappscom 
+0

Спасибо за ответ. Однако, чтобы быть ясным, у меня нет никаких проблем, связанных с репо на сервере, когда post-receive пытается скопировать файлы в корневой каталог веб-сайтов, которые возникают у меня. Файлы там принадлежат www-data, так что веб-сервер может их правильно записать/запустить. например добавьте плагины от администратора. – bbish007

+0

Кроме того, его пользователь, которого я использую для push-пульта, с помощью ssh, который не имеет прав на копирование и перезапись файлов в корневом каталоге веб-сайта. Я чувствую, что я пропускаю что-то очевидное !! – bbish007

+0

@ bbish007 Единственное, что может помочь (помимо выполнения команды с правом sudo), - это то, что этот пользователь будет в той же группе, что и группа файлов в веб-корне. – VonC

Смежные вопросы