Не получается корректно настроить работу 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 уже был, но на тему прав там инфы не нашел.