Tengo un sitio web que uso github (código cerrado) para rastrear cambios y actualizar el sitio. El único problema es que parece que se puede acceder al directorio .git a través de la web. ¿Cómo puedo detener esto y aún poder usar git?
¿Debo usar .htaccess? ¿Debo cambiar los permisos de .git?

Respuestas:
Cree un
.htaccessarchivo en la.gitcarpeta y coloque lo siguiente en este archivo:Pero tenga en cuenta que se perdería si alguna vez vuelve a clonar el repositorio
fuente
.git/directorio en sí porque se perdería si alguna vez volviera a clonar el repositorio.Ponga esto en un
.htaccessarchivo en la raíz de su servidor web:Esta solución es robusta y segura :
.gitdirectorios en su sitio, incluso si hay más de uno,.gitignorey.gitmodules.gitdirectorios recién agregados , yfuente
.gitcarpeta, pero aún podía obtener el.gitignorearchivo para abrir.server config, virtual host, directory, .htaccessRedirectMatch 404 /\.git.*Ambos
.htaccessy los permisos en la.git/carpeta funcionarían. Recomiendo el primero:fuente
<Files>,<FilesMatch>).No quería hurgar en el
.gitdirectorio y no pude conseguir que la solución de Bennett funcionara en Apache 2.2, pero agregar lo siguiente a mi<VirtualHost>configuración funcionó:fuente
No me siento cómodo controlando el acceso a mis carpetas .git individualmente y elijo hacerlo a través de la configuración de apache en lugar de .htaccess, para evitar sobrescribirlas u olvidarme de una nueva instalación, etc.
Aquí hay algunas instrucciones detalladas, espero que ayuden. Estoy usando Ubuntu 16.10.
fuente
Una opción más robusta y simple sería deshabilitar el permiso de LECTURA y Ejecución del
.gitdirectorio.Como Apache (httpd) se ejecuta principalmente en una cuenta de usuario especial, por ejemplo, se ejecuta como usuario
apacheen CentOS, mientras que el.gitdirectorio debe crearse en una cuenta de usuario real, por lo que simplemente podemos bloquear el acceso cambiando el permiso. Además, este enfoque no introduce ningún archivo nuevo ni afecta los comandos git.El comando puede ser:
fuente
chmodvolver a correr .mod_rewrite te dará el efecto deseado:
fuente
.gitdirectorio porque devuelve un código Prohibido en lugar de No Encontrado.En lugar de jugar con las
.htaccessreglas como sugieren la mayoría de las respuestas, ¿por qué no simplemente colocar el.git/directorio sobre el raíz web?En mis configuraciones, mi
.gitdirectorio generalmente vive en algo como:/home/web/project_name/.git/Mi código actual vive en
/home/web/project_name/www_root/ya que mi raíz web (como se define en Apache o Nginx ... prefiero la última) es que
/home/web/project_name/www_root/no hay forma de que el.gitdirectorio sea accesible desde la web ya que vive "más alto" que la raíz webfuente
project_namedirectorio tiene dos subdirectorios:www_rootdónde se encuentran los archivos cuando un visitante navega por mi sitio y.gitdónde está el repositorio. Sacando de las actualizaciones del repositoriowww_rooty sus contenidos. La cuestión es que, dado que el.gitdirectorio está jerárquicamente "encima" de mi controlador frontal, es inaccesible a través de la web.