http/https를 통해 사용할 수있는 몇 가지 GIT 저장소를 준비하고 싶습니다. 나는 여기저기서 읽고 git-http-backend에 대해 알았고, 나는 자습서를 따라 갔고 모든 것이 작동하도록했습니다. 내 htpasswd 파일에 지정된 임시 저장소를 제공하는 저장소를 복제하고 (지금은 user1과 user2로 가정) 변경 사항을 다시 푸시 할 수 있습니다.ScriptAliasMatch를 사용할 때 .htaccess가 무시됩니다.
내 레포지는 /var/www/git이며, gitweb도 마찬가지입니다.
등/아파치/conf.d/git.conf :
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
/usr/libexec/git-core/git-http-backend/$1
ScriptAlias /git /var/www/git/gitweb.cgi
<Location /git>
AuthType Basic
AuthName "Basic Auth"
AuthBasicProvider file ldap
# LDAP
AuthzLdapAuthoritative Off
AuthLDAPURL "ldap://[...]/CN=Users,DC=ad,DC=example,DC=com?sAMAccountName"
AuthLDAPBindDN "CN=Administrator,CN=Users,DC=ad,DC=example,DC=com"
AuthLDAPBindPassword Password11
# FILE
AuthUserFile /var/www/htpasswd
AuthGroupFile /var/www/git.groups
Require valid-user
</Location>
내가 설정을 시도하고 있는지
git clone http://localhost/git/gitrepo
Username for 'http://localhost/git/gitrepo': user1
Password for 'http://[email protected]': XXXXX
문제와 저장소를 복제 저장소 기반 권한 부여, 나는 단지 사용자 그룹이 각 저장소에 액세스 할 수 있기를 원합니다. , 이론적으로
Require User test2
: 나는 완벽한 솔루션 (서버를 다시 시작할 필요가 없습니다) 것 .htaccess 파일을 사용하여 생각, 그래서 난 내 저장소의 디렉토리는/var/www /에서 자식/gitrepo에서 간단한의 .htaccess를 넣어 test1을 사용하여 복제/푸싱 변경을 허용해서는 안되지만 여전히 작동 중입니다. .htaccess는 무시됩니다. 왜냐하면 내가 무엇을 넣었더라도 인증을 받으면 저장소를 복제 할 수 있기 때문입니다.
ScriptAliasMatch에 문제가있을 수 있습니다. 모든 처리는 git-http-backend exec로 이동하고 모든 트래픽을 리디렉션했기 때문에 Apache로 돌아 가지 않습니다. 나는 아파치에서 오히려 초보자 다. 그래서 그것은 간단한 이야기일지도 모른다. 그러나 제발 - 도와 줘라! :) 1
업데이트 : 예,에 AllowOverride는은/var/www /에서 자식에 대한 기본 설정에서 "모든"로 설정됩니다
당신은/var/www /에서 자식 디렉토리가 외부에<Directory "/var/www/git">
AllowOverride All
</Directory>
여기에서 할 수있는 것이 있다면 (나는 메일 링리스트에 가입 할 것 같네요),하지만 저는 Gitolite로 바꿨다고 말하고 싶었습니다. –