변경 내용을 추적하고 사이트를 업데이트하기 위해 github (폐쇄 소스)를 사용하는 웹 사이트가 있습니다. 유일한 문제는 웹을 통해 .git 디렉토리에 액세스 할 수 있다는 것입니다. 이것을 멈추고 여전히 자식을 사용할 수 있습니까?
.htaccess를 사용해야합니까? .git의 권한을 변경해야합니까?
변경 내용을 추적하고 사이트를 업데이트하기 위해 github (폐쇄 소스)를 사용하는 웹 사이트가 있습니다. 유일한 문제는 웹을 통해 .git 디렉토리에 액세스 할 수 있다는 것입니다. 이것을 멈추고 여전히 자식을 사용할 수 있습니까?
.htaccess를 사용해야합니까? .git의 권한을 변경해야합니까?
답변:
폴더에 .htaccess
파일을 작성 .git
하고이 파일에 다음을 입력하십시오.
Order allow,deny
Deny from all
그러나 저장소를 다시 복제하면 손실 될 수 있습니다.
.git/
저장소를 다시 복제하면 디렉토리가 손실되므로 디렉토리 자체 에 넣지 않는 것이 좋습니다 .
이것을 웹 서버 .htaccess
의 루트 에있는 파일에 넣으십시오 .
RedirectMatch 404 /\.git
이 솔루션은 강력 하고 안전합니다 .
.git
사이트의 모든 디렉토리에 대해 작동합니다 ( 하나 이상이 있어도).gitignore
및.gitmodules
.git
디렉토리 에서도 작동합니다..git
폴더,하지만 난 여전히 얻을 수있는 .gitignore
파일을 올려 수 있습니다.
server config, virtual host, directory, .htaccess
RedirectMatch 404 /\.git.*
폴더 .htaccess
에 대한 권한이 모두 .git/
작동합니다. 나는 전자를 추천한다 :
<Directory .git>
order allow,deny
deny from all
</Directory>
<Files>
, <FilesMatch>
).
.git
디렉토리 에서 혼란스럽게하고 싶지 않았고 Bennett의 솔루션 을 Apache 2.2에서 작동 시킬 수 없었지만 <VirtualHost>
구성에 다음을 추가하면 효과가 있습니다.
RewriteRule ^.*\.git.* - [R=404]
내 .git 폴더에 대한 액세스를 개별적으로 제어하는 것이 불편하고 .htaccess 대신 apache config를 통해 폴더를 덮어 쓰거나 새 설치 등을 잊어 버리지 않도록 선택합니다.
다음은 도움이되기를 바랍니다. 우분투 16.10을 사용하고 있습니다.
보다 강력하고 간단한 옵션은 .git
디렉토리 의 읽기 및 실행 권한을 비활성화하는 것 입니다.
예를 들어 Apache (httpd)는 대부분 특수 사용자 계정으로 실행되므로 apache
CentOS에서는 사용자로 실행되지만 .git
디렉토리는 실제 사용자 계정으로 만들어야하므로 권한을 변경하여 액세스를 간단히 차단할 수 있습니다. 또한이 접근법은 새로운 파일을 도입하지 않으며 git 명령에 영향을 미치지 않습니다.
명령은 다음과 같습니다.
chmod -R o-rx .git
chmod
해야 한다는 점 입니다.
.htaccess
대부분의 답변이 제안 하는 규칙 을 어지럽히는 대신 단순히 웹 .git/
루트 위에 디렉토리 를 두지 않는 이유 는 무엇입니까?
내 설정에서 내 .git
디렉토리는 일반적으로 다음과 같습니다.
/home/web/project_name/.git/
내 실제 코드는
/home/web/project_name/www_root/
내 웹 루트 (Apache 또는 Nginx에 정의 된대로). 후자 는 웹 루트보다 "높은"디렉토리에 있기 때문에 웹에서 디렉토리에 액세스 할 수있는 /home/web/project_name/www_root/
방법이 없습니다..git
project_name
디렉토리에는 www_root
방문자가 내 사이트를 탐색 할 때 파일이 실제로 제공되는 .git
위치와 저장소가있는 두 개의 하위 디렉토리 가 있습니다 . 리포지토리 업데이트 www_root
및 내용 에서 가져 오기 문제는 .git
디렉토리가 프론트 컨트롤러의 "위"에 계층 적으로 있기 때문에 웹을 통해 액세스 할 수 없다는 것입니다 .