permitir acesso do usuário via ssh a /var/www/

permitir acesso do usuário via ssh a /var/www/

Contexto: estou criando um gancho gitolite3 para um repositório específico, que contém alguma lógica e CSS do meu site.

então o que essencialmente acontece é

O conteúdo abaixo /var/www/nginx/é semelhante a:

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

.gité especial:

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

Para garantir que todos os subdiretórios tenham os direitos de acesso adequados, usei:

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

[Isso é apenas um bônus, você pode pular isso.]

O gancho 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.lognão contém nenhuma negação de acesso.


Atualizar:Mesmo o login gitlocal também não funciona. Então isso é provavelmentenão relacionado ao contexto de segurança do SELinux/arquivo.


Por que isso não funciona como eu esperava?

Responder1

Algumas razões pelas quais não funcionou:

  • do utilizador gitdeveria ser membro degrupo git
  • não faça pull/rebase como um usuário diferente, isso .git/*pode mudar de propriedade, especialmente quando estiver logado comoroot

Uma solução mais elegante é usar monit, monitorar o repositório em (como usuário git) ~/repositoriespara que eu também possa reiniciar nginxe uwsgise um webapp/arquivo executável for alterado.

informação relacionada