permite acesso do usuário via ssh para / var / www /

2

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

então o que realmente acontece é

O conteúdo em /var/www/nginx/ se parece com:

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 que usei:

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

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

O gancho de 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 não contém nenhum acesso negado.

Atualização: Mesmo o login em git localmente também não funciona. Portanto, isso provavelmente não está relacionado com o contexto de segurança do SELinux / file .

Por que isso não funciona como eu esperava?

    
por drahnr 05.05.2014 / 18:08

1 resposta

0

Algumas razões pelas quais isso não funcionou:

  • usuário git deve ser membro do grupo git
  • não receba / rebaixe como um usuário diferente, o .git/* pode alterar a propriedade, principalmente quando estiver logado como root

Uma solução mais elegante é usar monit , monitorando o repositório sob (como usuário git ) ~/repositories para que eu possa também reiniciar nginx e uwsgi se um arquivo / aplicação web executável for alterado.

    
por 06.05.2014 / 19:02