permitir el acceso del usuario a través de ssh a /var/www/

permitir el acceso del usuario a través de ssh a /var/www/

Contexto: estoy creando un gancho gitolite3 para un repositorio específico, que contiene algo de lógica y CSS de mi sitio web.

entonces lo que esencialmente sucede es

El contenido a continuación /var/www/nginx/se ve así:

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

.gites especial:

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

Para asegurarme de que todos los subdirectorios tengan los derechos de acceso adecuados, utilicé:

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

[Esto es solo una ventaja, puedes omitirlo.]

El anzuelo 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.logno contiene ningún acceso denegado.


Actualizar:Incluso iniciar sesión gitlocalmente tampoco funciona. Entonces esto es probablementeno relacionado con SELinux/contexto de seguridad de archivos.


¿Por qué esto no funciona como esperaba?

Respuesta1

Algunas razones por las que no funcionó:

  • usuario gitdebe ser miembro degrupo git
  • no extraiga/rebase como un usuario diferente, .git/*podría cambiar de propietario, esto es especialmente cuando se inicia sesión comoroot

Una solución más elegante es usar monit, monitorear el repositorio en (como usuario git) ~/repositoriespara poder reiniciar también nginxy uwsgisi una aplicación web/archivo ejecutable cambió.

información relacionada