Mam witrynę, na której używam github (zamknięte źródło) do śledzenia zmian i aktualizacji witryny. Jedynym problemem jest to, że wydaje się, że katalog .git jest dostępny przez internet. Jak mogę to zatrzymać i nadal korzystać z git?
Czy powinienem używać .htaccess? Czy powinienem zmienić uprawnienia .git?
Odpowiedzi:
Utwórz
.htaccess
plik w.git
folderze i umieść w tym pliku:Ale pamiętaj, że zostanie utracone, jeśli kiedykolwiek ponownie sklonujesz repozytorium
źródło
.git/
katalogu, ponieważ zostałby utracony, gdybyś kiedykolwiek ponownie sklonował repozytorium.Umieść to w
.htaccess
pliku w katalogu głównym swojego serwera internetowego:To rozwiązanie jest solidne i bezpieczne : it
.git
katalogów w Twojej witrynie, nawet jeśli jest ich więcej niż jeden,.gitignore
i.gitmodules
.git
katalogów, aźródło
.git
folderze, ale nadal mogłem pobrać.gitignore
plik.server config, virtual host, directory, .htaccess
RedirectMatch 404 /\.git.*
Działałyby zarówno
.htaccess
uprawnienia, jak i uprawnienia do.git/
folderu. Polecam ten pierwszy:źródło
<Files>
,<FilesMatch>
).Nie chciałem grzebać w
.git
katalogu i nie byłem w stanie zmusić rozwiązania Bennetta do pracy z Apache 2.2, ale dodanie następujących elementów do mojej<VirtualHost>
konfiguracji zadziałało:źródło
Nie czuję się komfortowo w kontrolowaniu dostępu do moich folderów .git indywidualnie i wybieram robienie tego przez konfigurację apache zamiast .htaccess, aby zapobiec ich nadpisaniu lub zapomnieniu przy nowej instalacji itp.
Oto kilka szczegółowych instrukcji, które mają nadzieję, że pomogą. Używam Ubuntu 16.10.
źródło
Bardziej niezawodną i prostszą opcją byłoby wyłączenie uprawnień do odczytu i wykonywania
.git
katalogu.Ponieważ głównie Apache (httpd) działa pod specjalnym kontem użytkownika, na przykład działa jako użytkownik
apache
na CentOS, podczas gdy.git
katalog musi być utworzony na prawdziwym koncie użytkownika, więc możemy po prostu zablokować dostęp, zmieniając uprawnienia. Co więcej, takie podejście nie wprowadza żadnego nowego pliku ani nie wpływa na polecenia git.Poleceniem może być:
źródło
chmod
ponownym uruchomieniu .mod_rewrite da ci pożądany efekt:
źródło
.git
katalogu, ponieważ zwraca on kod zabroniony, a nie „Nie znaleziono”.Zamiast majstrować przy
.htaccess
regułach, jak sugeruje większość odpowiedzi, dlaczego nie umieścić.git/
katalogu nad katalogiem głównym?W moich konfiguracjach mój
.git
katalog zwykle znajduje się w czymś takim:/home/web/project_name/.git/
Mój rzeczywisty kod żyje w
/home/web/project_name/www_root/
ponieważ mój katalog główny (zgodnie z definicją w Apache lub Nginx .. Wolę ten drugi)
/home/web/project_name/www_root/
nie ma możliwości, aby.git
katalog był dostępny z sieci, ponieważ żyje on „wyżej” niż katalog głównyźródło
project_name
katalog ma dwa podkatalogi:www_root
gdzie znajdują się pliki faktycznie obsługiwane, gdy odwiedzający przegląda moją witrynę, i.git
gdzie znajduje się repozytorium. Pobieranie z aktualizacji repozytoriumwww_root
i jego zawartości. Chodzi o to, że ponieważ.git
katalog jest hierarchicznie „nad” moim kontrolerem frontowym, jest niedostępny przez Internet.rozwiązanie dla serwera apache2 (LAMP) - masz 2 miejsca na dodanie
.htaccess
zawartości .. jeśli 1 zawiedzie, spróbuj dalejnie ma potrzeby ponownego uruchamiania serwera, działa on, gdy wywoływana jest strona
źródło