Название общее, но у меня есть более конкретные вопросы.Я глубоко погружен в кошмар разрешений, пытаясь настроить систему «push-to-deploy» с помощью Git.
С моего локального компьютера я отправляю SSH на сервер (Ubuntu 14.04).У меня сервер настроен как удаленный
git remote add development devuser@development.server:/home/dummyuser/bare/repo.git
. Этот пустой репозиторий находится в домашней папке фиктивного пользователя dummyuser
, который мы используем для выполнения задач развертывания.devuser
- это моя собственная учетная запись на сервере разработки.
У меня настроен хук post-receive
в удаленном репозитории (development.server:/home/dummyuser/bare/repo.git/hooks/post-receive
), предназначенный для развертывания файлов через git checkout
в каталог веб-сервера.на том же сервере, назовите его webfolder/
.Эта папка в настоящее время имеет разрешения
drwxr-xr-x dummyuser www-data webfolder/
, где www-data
- группа, связанная с пользователем Apache.
Если у меня есть подключаемый скрипт post-receive
, используйте команду
git --work-tree=/var/www/webfolder --git-dir=/home/dummyuser/bare/repo.git checkout -f
Я получаю ошибки, которые он не может записать в webfolder/
, что предсказуемо, так как я предполагаю, что скрипт запускается как я (devuser
), так как я выполнял толчок через SSH, а devuser
не делаетwebfolder/
.
не может иметь никаких разрешений. Однако, если я изменю сценарий на dummyuser
,
sudo -u dummyuser git --work-tree=/var/www/webfolder --git-dir=/home/dummyuser/bare/repo.git checkout -f
, просто чтобы посмотреть, что произойдет, у меня будет ошибка
warning: unable to access '/home/devuser/.config/git/attributes': Permission denied
Есть пара вещей, которые я не понимаю по этому поводу:
1) Ни /home/devuser/.config/
, ни /home/dummyuser/.config/
не существует.Это нормально, но если Git требуется доступ к папке .config/
, почему он не жаловался раньше, когда я устанавливал голые репозитории и выполнял хуки как devuser
?
2) Теперь, когда япытаясь действовать как dummyuser
, почему Git ищет в ~devuser/
папку .config/
?Почему это не выглядит в ~dummyuser/?
Я работал над этим крошечным кусочком одной единственной проблемы в сводящем с ума шоу-шоу, которое "использует Git" для появления на четыре часа, и мой мозгнечетко, поэтому, пожалуйста, используйте маленькие слова.