Сделать каталог недоступным .git недоступен

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

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

Ответ 1

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

Order allow,deny
Deny from all

Ответ 2

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

RedirectMatch 404 /\.git

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

Более надежный и простой вариант приведет к отключению разрешения READ и Execution в каталоге .git.

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

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

chmod -R o-rx .git

Ответ 7

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

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

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