разрешить доступ пользователя через ssh к /var/www/

разрешить доступ пользователя через ssh к /var/www/

Контекст: Я создаю хук gitolite3 для определенного репозитория, который содержит некоторую логику и css foo моего веб-сайта.

так что по сути происходит следующее

Содержимое ниже /var/www/nginx/выглядит так:

drwxrwxr-x. nginx   git   system_u:object_r:httpd_sys_content_t:s0 foo

.gitособенный:

drwxrwxr-x. git     git   system_u:object_r:httpd_sys_content_t:s0 .git

Чтобы убедиться, что все подкаталоги имеют соответствующие права доступа, я использовал:

chown nginx:git -Rf ./webfoo
chmod g+rw -Rf ./webfoo
chown git:git -Rf ./webfoo/.git

[Это просто бонус, можете пропустить.]

Хук gitolite3

#!/bin/bash
cd /var/www/nginx/webfoo || exit
unset GIT_DIR
echo "where: $(pwd)"
git pull -f origin deploy-me-branch

remote: where: /var/www/nginx/webfoo
remote: From /home/gitolite/repositories/webfoo
remote:    c092ee2..07274a6  master     -> origin/master
remote: error: unable to unlink old '.gitignore' (Permission denied)
remote: error: unable to unlink old 'templates/fancypost.html' (Permission denied)
remote: error: unable to unlink old 'templates/layout.html' (Permission denied)

/var/log/audit/audit.logне содержит запретов на доступ.


Обновлять:Даже локальный вход gitтоже не работает. Так что это, вероятно,не связан с контекстом безопасности SELinux/файлов.


Почему это не работает так, как я ожидал?

решение1

Вот несколько причин, почему это не сработало:

  • пользователь gitдолжен быть членомгруппа git
  • не выполняйте pull/rebase как другой пользователь, .git/*это может привести к смене владельца, особенно если вы вошли в систему какroot

Более элегантным решением является использование monitмониторинга репозитория под (как пользователь git) ~/repositories, чтобы я мог также перезапустить его nginx, uwsgiесли исполняемое веб-приложение/файл изменилось.

Связанный контент