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
.htaccess
archivo en la.git
carpeta 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
.htaccess
archivo en la raíz de su servidor web:Esta solución es robusta y segura :
.git
directorios en su sitio, incluso si hay más de uno,.gitignore
y.gitmodules
.git
directorios recién agregados , yfuente
.git
carpeta, pero aún podía obtener el.gitignore
archivo para abrir.server config, virtual host, directory, .htaccess
RedirectMatch 404 /\.git.*
Ambos
.htaccess
y los permisos en la.git/
carpeta funcionarían. Recomiendo el primero:fuente
<Files>
,<FilesMatch>
).No quería hurgar en el
.git
directorio 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
.git
directorio.Como Apache (httpd) se ejecuta principalmente en una cuenta de usuario especial, por ejemplo, se ejecuta como usuario
apache
en CentOS, mientras que el.git
directorio 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
chmod
volver a correr .mod_rewrite te dará el efecto deseado:
fuente
.git
directorio porque devuelve un código Prohibido en lugar de No Encontrado.En lugar de jugar con las
.htaccess
reglas 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
.git
directorio 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.git
directorio sea accesible desde la web ya que vive "más alto" que la raíz webfuente
project_name
directorio tiene dos subdirectorios:www_root
dónde se encuentran los archivos cuando un visitante navega por mi sitio y.git
dónde está el repositorio. Sacando de las actualizaciones del repositoriowww_root
y sus contenidos. La cuestión es que, dado que el.git
directorio está jerárquicamente "encima" de mi controlador frontal, es inaccesible a través de la web.