J'ai un site Web sur lequel 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 continuer à utiliser git?
Dois-je utiliser .htaccess? Dois-je modifier les autorisations de .git?
Réponses:
Créez un
.htaccess
fichier dans le.git
dossier et placez ce qui suit dans ce fichier:Mais notez qu'il serait perdu si jamais vous re-cloniez le référentiel
la source
.git/
répertoire lui-même car il serait perdu si jamais vous re-cloniez le référentiel.Mettez ceci dans un
.htaccess
fichier à la racine de votre serveur Web:Cette solution est robuste et sécurisée : elle
.git
répertoires de votre site, même s'il y en a plus d'un,.gitignore
et.gitmodules
.git
répertoires nouvellement ajoutés , etla source
.git
dossier, mais je pouvais toujours récupérer le.gitignore
fichier.server config, virtual host, directory, .htaccess
RedirectMatch 404 /\.git.*
Les deux
.htaccess
et les autorisations sur le.git/
dossier fonctionneraient. Je recommande l'ancien:la source
<Files>
,<FilesMatch>
).Je ne voulais pas me faufiler dans le
.git
répertoire et je n'ai pas pu faire fonctionner la solution de Bennett sur Apache 2.2, mais l'ajout de ce qui suit à ma<VirtualHost>
configuration a fonctionné:la source
Je ne suis pas à l'aise avec le contrôle individuel de l'accès à mes dossiers .git et je choisis de le faire via apache config au lieu de .htaccess, pour éviter de les écraser ou d'oublier une nouvelle installation, etc.
Voici quelques instructions détaillées en espérant qu'elles vous aideront. J'utilise Ubuntu 16.10.
la source
Une option plus robuste et simple consisterait à désactiver la permission de lecture et d'exécution du
.git
répertoire.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.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, ni n'affecte les commandes git.La commande peut être:
la source
chmod
recommencer.mod_rewrite vous donnera l'effet désiré:
la source
.git
répertoire car il renvoie un code interdit plutôt que Not Found.Au lieu de jouer avec les
.htaccess
règles comme le suggèrent la plupart des réponses, pourquoi ne pas simplement placer le.git/
répertoire au-dessus de la racine Web?Dans mes configurations, mon
.git
répertoire se trouve généralement dans quelque chose comme:/home/web/project_name/.git/
Mon code actuel habite
/home/web/project_name/www_root/
puisque ma racine Web (telle que définie sur Apache ou Nginx .. je préfère ce dernier)
/home/web/project_name/www_root/
il n'y a aucun moyen que le.git
répertoire puisse être accessible depuis le Web car il vit "plus haut" que la racine Webla source
project_name
répertoire a deux sous-répertoires:www_root
où se trouvent les fichiers réellement servis lorsqu'un visiteur navigue sur mon site et.git
où se trouve le dépôt. Extraire des mises à jour du référentielwww_root
et de son contenu. Le fait est que, puisque le.git
répertoire est hiérarchiquement "au-dessus" de mon contrôleur frontal, il est inaccessible via le Web.