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?
Créez un fichier .htaccess
Dans le dossier .git
Et placez les éléments suivants dans ce fichier:
Order allow,deny
Deny from all
Mettez ceci dans un .htaccess
fichier à la racine de votre serveur Web:
RedirectMatch 404 /\.git
Cette solution est robuste et sécurisée: elle
.git
répertoires de votre site, même s’il en existe plusieurs,.gitignore
et .gitmodules
.git
répertoires, et.htaccess
Et les autorisations sur le dossier .git/
Fonctionneraient. Je recommande l'ancien:
<Directory .git>
order allow,deny
deny from all
</Directory>
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]
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.
mod_rewrite vous donnera l'effet souhaité:
RewriteEngine on
RewriteRule .*\.git/.* - [F]
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