web-dev-qa-db-fra.com

Rendre le répertoire .git Web 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 apparaît que le répertoire .git est accessible via le Web. Comment puis-je arrêter cela et continuer à utiliser git?

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

116
Chris Muench

Créez un fichier .htaccess Dans le dossier .git Et placez les éléments suivants dans ce fichier:

Order allow,deny
Deny from all
34
ThiefMaster

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

RedirectMatch 404 /\.git

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

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

.htaccess Et les autorisations sur le dossier .git/ Fonctionneraient. Je recommande l'ancien:

<Directory .git>
    order allow,deny
    deny from all
</Directory>
34
Jake Wharton

Je ne voulais pas me perdre dans le .git répertoire et n’a pas pu obtenir solution de Bennett pour fonctionner sur Apache 2.2, mais en ajoutant ce qui suit à mon <VirtualHost> configuration réussie:

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

Je ne suis pas à l'aise avec le contrôle de l'accès à mes dossiers .git individuellement et je choisis de le faire via Apache config au lieu de .htaccess, pour m'empêcher de les écraser, d'oubli d'une nouvelle installation, etc.

Voici quelques instructions détaillées pour vous aider. J'utilise Ubuntu 16.10.

  1. Commencez par vérifier ce qui se passe si vous accédez au dossier .git dans un navigateur. Dans mon cas, on m'a présenté une liste de répertoires. Si vous voyez ce que vous ne devriez pas voir (c.-à-d. Que vous n'obtenez pas de 404), procédez comme suit.
  2. Utilisez Apache2ctl -V pour obtenir les HTTPD_ROOT et SERVER_CONFIG_FILE.
  3. Utilisez ceci pour modifier votre configuration Apache, dans mon cas, $ Sudo nano /etc/Apache2/Apache2.conf
  4. Ajoutez les éléments suivants quelque part dans le fichier de configuration: RedirectMatch 404 /.git
  5. Redémarrez Apache: redémarrez le service $ Sudo Apache2
  6. Devrait maintenant vous obtenir un 404 si vous accédez à nouveau au dossier
  7. J'ai essayé cela avec .gitignore et j'ai aussi eu un 404
5
Chris B

mod_rewrite vous donnera l'effet souhaité:

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

Une option plus simple et plus robuste serait de désactiver les autorisations de lecture et d’exécution de la commande .git répertoire.

Dans la mesure où Apache (httpd) fonctionne principalement sous un compte utilisateur spécial, par exemple, il s'exécute en tant qu'utilisateur Apache sur CentOS, tandis que le .git répertoire doit être créé sous un compte utilisateur réel, nous pouvons donc simplement bloquer l'accès en modifiant l'autorisation. De plus, cette approche n'introduit aucun nouveau fichier, et n'affecte pas les commandes git.

La commande peut être:

chmod -R o-rx .git
2
hailong