[git] .git 디렉토리 웹에 액세스 할 수 없도록 설정

변경 내용을 추적하고 사이트를 업데이트하기 위해 github (폐쇄 소스)를 사용하는 웹 사이트가 있습니다. 유일한 문제는 웹을 통해 .git 디렉토리에 액세스 할 수 있다는 것입니다. 이것을 멈추고 여전히 자식을 사용할 수 있습니까?

.htaccess를 사용해야합니까? .git의 권한을 변경해야합니까?



답변

폴더에 .htaccess파일을 작성 .git하고이 파일에 다음을 입력하십시오.

Order allow,deny
Deny from all

그러나 저장소를 다시 복제하면 손실 될 수 있습니다.


답변

이것을 웹 서버 .htaccess루트 에있는 파일에 넣으십시오 .

RedirectMatch 404 /\.git

이 솔루션은 강력 하고 안전합니다 .

  • .git사이트의 모든 디렉토리에 대해 작동합니다 ( 하나 이상이 있어도)
  • 또한 숨 깁니다 같은 다른 망할 놈의 파일 .gitignore.gitmodules
  • 새로 추가 된 .git디렉토리 에서도 작동합니다.
  • 디렉토리가 존재한다는 사실조차 알려주지 않습니다.

답변

폴더 .htaccess에 대한 권한이 모두 .git/작동합니다. 나는 전자를 추천한다 :

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


답변

.git디렉토리 에서 혼란스럽게하고 싶지 않았고 Bennett의 솔루션 을 Apache 2.2에서 작동 시킬 수 없었지만 <VirtualHost>구성에 다음을 추가하면 효과가 있습니다.

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


답변

내 .git 폴더에 대한 액세스를 개별적으로 제어하는 ​​것이 불편하고 .htaccess 대신 apache config를 통해 폴더를 덮어 쓰거나 새 설치 등을 잊어 버리지 않도록 선택합니다.

다음은 도움이되기를 바랍니다. 우분투 16.10을 사용하고 있습니다.

  1. 먼저 브라우저에서 .git 폴더로 이동하면 어떻게되는지 확인하십시오. 제 경우에는 디렉토리 목록이 제공되었습니다. 보지 말아야 할 것을보고 있다면 (즉, 404를 얻지 못하고있는 경우) 다음을 수행하십시오.
  2. apache2ctl -V를 사용하여 HTTPD_ROOT 및 SERVER_CONFIG_FILE을 가져 오십시오.
  3. 내 경우 $ sudo nano /etc/apache2/apache2.conf에서 아파치 구성을 편집하려면 이것을 사용하십시오.
  4. 구성 파일 어딘가에 다음을 추가하십시오. RedirectMatch 404 /.git
  5. 아파치 다시 시작 : $ sudo service apache2 restart
  6. 폴더로 다시 이동하면 404가 표시됩니다.
  7. 나는 이것을 .gitignore로 시도하고 404도 얻었습니다.

답변

보다 강력하고 간단한 옵션은 .git디렉토리 의 읽기 및 실행 권한을 비활성화하는 것 입니다.

예를 들어 Apache (httpd)는 대부분 특수 사용자 계정으로 실행되므로 apacheCentOS에서는 사용자로 실행되지만 .git디렉토리는 실제 사용자 계정으로 만들어야하므로 권한을 변경하여 액세스를 간단히 차단할 수 있습니다. 또한이 접근법은 새로운 파일을 도입하지 않으며 git 명령에 영향을 미치지 않습니다.

명령은 다음과 같습니다.

chmod -R o-rx .git


답변

mod_rewrite는 원하는 효과를줍니다 :

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