Как раздавать права на директорию для автоматического деплоя из git?
Добрый день.
Пытаюсь настроить автоматический деплой проекта из гит репозитория. На репозиторий вешается хук, который при пуше делает запрос на мой сервер. Тот при получении запроса делает пулл и запускает сценарий миграций. Встал вопрос с правами на директории.
Владельцем диреткории с проектом является пользователь ww-data. По логике вещей работой с гитом должен заниматься другой пользователь. Я создал пользователя и добавил его в группу ww-data. Установил на директорию с проектом права 770. Все работает. Но какой смысл заводить отдельного пользователя для деплоя, если у него одинаковые права с www-data?
Подскажите, правильно ли я делаю, или права надо по другому раздать?
1. Файлы в рабочем каталоге сайта не должны принадлежать www-data, кроме тех, которые записывает сам сервер. Иначе вы получите дополнительную уязвимость.
2. Лучше не держать в doc-root .git - в какой-то момент вы забудете закрыть доступ к этой папочке, и… весь ваш код окажется у хакеров.
Поэтому на сервере с центральным репозиторием (куда вы делаете пуш) делаете еще один репозиторий, откуда вы по хуку делаете пулл. А на боевой сервер отправляете все с помощью rsync или например dklab realsync (который использует тот же rsync, но в автоматическом режиме следит за изменениями в папке и сразу же их синкает на второй сервер).
Ну и владельца лучше поставить какого-нибудь отличного от www-data
.git лежит выше document root. Так что это не проблема. А вот на счет прав, позвольте уточнить:
В document root есть три директории: хранилище, куда записываются загружаемые пользователями файлы; директория с php скриптами; директория, доступная веб-серверу (точка входа и assets файлы).
Кто должен быть владельцем у этих директорий и какие им нужны права?