Rendre le répertoire web .git inaccessible

J’ai un site Web que j’utilise github (source fermée) pour suivre les modifications et mettre à jour le site. Le seul problème est qu’il semble que le répertoire .git soit accessible via le Web. Comment puis-je arrêter cela et pouvoir toujours utiliser git?

Devrais-je utiliser .htaccess? Devrais-je changer les permissions de .git?

Créez un fichier .htaccess dans le dossier .git et insérez les éléments suivants dans ce fichier:

 Order allow,deny Deny from all 

Placez ceci dans un fichier .htaccess à la racine de votre serveur Web:

 RedirectMatch 404 /\.git 

Cette solution est robuste et sécurisée : elle

  • fonctionne pour tous les répertoires .git de votre site, même s’il en existe plusieurs,
  • cache également d’autres fichiers Git tels que .gitignore et .gitmodules
  • fonctionne même pour les nouveaux répertoires .git et
  • ne donne même pas le fait que les répertoires existent.

Les deux .htaccess et les permissions sur le dossier .git/ fonctionneraient. Je recommande l’ancien:

  order allow,deny deny from all  

mod_rewrite vous donnera l’effet désiré:

 RewriteEngine on RewriteRule .*\.git/.* - [F] 

Je ne voulais pas me .git dans le répertoire .git et .git pas réussi à faire fonctionner la solution de Bennett sur Apache 2.2, mais l’ajout de ce qui suit à ma configuration de fonctionné:

 RewriteRule ^.*\.git.* - [R=404] 

Je ne suis pas à l’aise pour contrôler l’access à mes dossiers .git individuellement et choisir de le faire via la configuration d’Apache au lieu de .htaccess, pour éviter de les écraser, ou d’oublier une nouvelle installation, etc.

Voici quelques instructions détaillées, j’espère qu’elles vous aideront. J’utilise Ubuntu 16.10.

  1. Vérifiez d’abord ce qui se passe si vous naviguez dans le dossier .git dans un navigateur. Dans mon cas, j’ai été présenté avec une liste de répertoire. Si vous voyez ce que vous ne devriez pas voir (c.-à-d. Que vous n’obtenez pas un 404), procédez comme suit.
  2. Utilisez apache2ctl -V pour obtenir HTTPD_ROOT et SERVER_CONFIG_FILE
  3. Utilisez ceci pour éditer votre config apache, dans mon cas $ sudo nano /etc/apache2/apache2.conf
  4. Ajoutez ce qui suit quelque part dans le fichier de configuration: RedirectMatch 404 /.git
  5. Redémarrez apache: $ sudo service apache2 restart
  6. Devrait maintenant vous obtenir un 404 si vous naviguez à nouveau dans le dossier
  7. J’ai essayé ceci avec .gitignore et aussi eu un 404

Une option plus robuste et simple serait de désactiver les permissions READ et Execution du répertoire .git .

Comme Apache (httpd) s’exécute principalement sous un compte utilisateur spécial, par exemple, il s’exécute en tant qu’utilisateur apache sur CentOS, tandis que le répertoire .git doit être créé sous un compte utilisateur réel, ce qui permet de bloquer l’access. De plus, cette approche n’introduit aucun nouveau fichier, ni n’affecte les commandes git.

La commande peut être:

 chmod -R o-rx .git