Не получается корректно настроить работу post-receive.
После выполнения push, не удается выполнить chmod / chown.
remote: chown: changing ownership of '/home/site/test': Operation not permitted
Команда в hooks/post-receive:
chown -R username:nginx /home/site/test
На файл пытался выставить права root:root с suid флагом, но все-равно пишет Operation not permitted
И еще не совсем понятно, на какие каталоги какие права должны быть выставлены.
Т.е. сейчас на директорию test и её содержимое выставляются следующие права:
chown -R username:nginx /home/site/test
find /home/site/test -type f -exec chmod 644 {} \;
find /home/site/test -type d -exec chmod 755 {} \;
Но я не совсем уверен, что это корректно.
Про права в линуксе читал и более менее представляю, как это должно быть.
Но я могу и ошибаться.
Работа с git-репозиторием осуществляется с помощью SSH.
GIT_SSH_COMMAND=«ssh -i ~/ssh_keys/private» git clone «username@[2a01:4f8:xx:xx::xx]»:/~/test.git
Репозиторий находится в директории /home/repository/test.git
Домашний каталог пользователя /home/repository
Итого:
1. Почему не работает post-receive и как сделать правильно.
2. После команды git --work-tree права на файлы в директории /home/site/test будут принадлежать тому пользователю, из под которого происходит push на сервер?
А группа? Если пользователь состоит только в группе nginx, значит и группа будет nginx?
3. Если в предыдущем вопросе пользователь/группа в /home/site/test равны username:nginx, то смысла в chown в post-receive нет? Но тогда как быть с chmod? Ведь он тоже не выполняется.
4. Ни chmod, ни chown нет при выставлении пользователю username shell-а git-shell. Как в таком случае выполнять команды в post-receive, если данных команд нет при использовании git-shell.
5. Корректно ли сейчас выставляются права на каталоги/файлы.
6. Может где можно почитать обо всем этом более развернуто?
От ссылки не отказался бы (не на поисковик).
На git-scm.com уже был, но на тему прав там инфы не нашел.

