web-dev-qa-db-ja.com

.gitディレクトリWebにアクセスできないようにする

変更を追跡し、サイトを更新するためにgithub(クローズドソース)を使用するWebサイトがあります。唯一の問題は、.gitディレクトリにWeb経由でアクセスできるように見えることです。どうすればこれを止めてもgitを使用できますか?

.htaccessを使用する必要がありますか? .gitのアクセス許可を変更する必要がありますか?

116
Chris Muench

.htaccessファイルの.gitフォルダーを作成し、このファイルに以下を入力します。

Order allow,deny
Deny from all
34
ThiefMaster

これをWebサーバーのroot.htaccessファイルに入れます。

RedirectMatch 404 /\.git

このソリューションはrobustおよびsecure:it

  • サイト内のすべての.gitディレクトリで機能します(複数ある場合でも)。
  • .gitignore.gitmodulesなどの他のGitファイルも非表示にします
  • 新しく追加された.gitディレクトリでも機能します。
  • ディレクトリが存在するという事実さえも明かしません。
343
Bennett McElwee

両方 .htaccessおよび.git/フォルダーが機能します。前者をお勧めします:

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

私は.gitディレクトリで、Apache 2.2で動作するために Bennettのソリューション を取得できませんでしたが、私の<VirtualHost>設定は機能しました:

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

私は.gitフォルダーへのアクセスを個別に制御することに不安があり、それらを上書きしたり、新しいインストールを忘れたりするのを防ぐために、.htaccessの代わりにApache configを介して行うことを選択します。

役立つ詳細な手順を以下に示します。 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サービスApache2の再起動
  6. フォルダーに再度移動すると、404が表示されるはずです。
  7. 私はこれを.gitignoreで試してみましたが、404
5
Chris B

mod_rewriteは、望ましい効果をもたらします。

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

より堅牢でシンプルなオプションは、.gitディレクトリの読み取りおよび実行権限を無効にすることです。

ほとんどの場合、Apache(httpd)は特別なユーザーアカウントで実行されるため、CentOSではApacheユーザーとして実行されますが、.gitディレクトリは実際のユーザーアカウントで作成する必要があります。許可を変更してアクセスをブロックします。さらに、このアプローチは新しいファイルを導入せず、gitコマンドにも影響しません。

コマンドは次のとおりです。

chmod -R o-rx .git
2
hailong