Сделать каталог .git недоступным - PullRequest
116 голосов
/ 26 мая 2011

У меня есть сайт, на котором я использую github (с закрытым исходным кодом), чтобы отслеживать изменения и обновлять сайт.Единственная проблема в том, что каталог .git доступен через Интернет.Как я могу остановить это и при этом использовать git?

Должен ли я использовать .htaccess?Должен ли я изменить разрешения .git?

Ответы [ 7 ]

340 голосов
/ 29 июля 2013

Поместите это в .htaccess файл в корне вашего веб-сервера:

RedirectMatch 404 /\.git

Это решение надежное и безопасное : оно

  • работает для всех .git каталогов на вашем сайте, даже если их несколько,
  • также скрывает другие файлы Git, такие как .gitignore и .gitmodules
  • работает даже для недавно добавленных .git каталогов и
  • даже не отдает тот факт, что каталоги существуют.
35 голосов
/ 26 мая 2011

Создайте файл .htaccess в папке .git и поместите в него следующее:

Order allow,deny
Deny from all
33 голосов
/ 26 мая 2011

И .htaccess, и разрешения для папки .git/ будут работать.Я рекомендую первое:

<Directory .git>
    order allow,deny
    deny from all
</Directory>
6 голосов
/ 16 ноября 2015

Я не хотел копаться в каталоге .git и не смог заставить решение Беннетта работать на Apache 2.2, но добавление следующего к моей конфигурации <VirtualHost> сработало:

RewriteRule ^.*\.git.* - [R=404]
5 голосов
/ 23 января 2017

Мне неудобно контролировать доступ к моим папкам .git по отдельности, и я предпочитаю делать это через конфигурацию apache вместо .htaccess, чтобы я не перезаписывал их или не забывал при новой установке и т. Д.

Вот некоторые подробные инструкции, надеюсь, они помогут.Я использую Ubuntu 16.10.

  1. Сначала проверьте, что произойдет, если вы перейдете в папку .git в браузере.В моем случае мне представили список каталогов.Если вы видите то, что не должны видеть (т.е. вы не получаете 404), сделайте следующее.
  2. Используйте apache2ctl -V, чтобы получить HTTPD_ROOT и SERVER_CONFIG_FILE
  3. Использоватьэто для редактирования вашей конфигурации apache, в моем случае $ sudo nano /etc/apache2/apache2.conf
  4. Добавьте следующее где-нибудь в файле конфигурации: RedirectMatch 404 /.git
  5. Перезапустите apache:$ sudo service apache2 restart
  6. Должен теперь получить 404, если вы снова перейдете в папку
  7. Я пробовал это с .gitignore и также получил 404
3 голосов
/ 08 февраля 2012

mod_rewrite даст вам желаемый эффект:

RewriteEngine on
RewriteRule .*\.git/.* - [F]
2 голосов
/ 09 ноября 2016

Более надежным и простым вариантом было бы отключение разрешения ЧТЕНИЕ и Выполнение каталога .git.

Так как в основном Apache (httpd) работает под специальной учетной записью пользователя, например, он работает как пользователь apache в CentOS, тогда как каталог .git должен быть создан под реальной учетной записью пользователя, поэтому мы можем просто заблокировать доступ путем изменения разрешения. Более того, этот подход не вводит новый файл и не влияет на команды git.

Команда может быть:

chmod -R o-rx .git
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...