我想通過http/https準備幾個可用的GIT存儲庫。我在這裏和那裏閱讀,並瞭解到git-http-backend,我遵循教程,並設法讓一切工作。我可以克隆提供我htpasswd文件中指定的創建的存儲庫(讓我們假設現在是user1和user2)並將更改推回。。使用ScriptAliasMatch時忽略.htaccess
我的回購在/var/www/git,gitweb也是如此。
等/的httpd/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
問題庫是,我試圖建立資料庫爲基礎授權,我只希望一組用戶能夠訪問每個存儲庫。我想通了使用.htaccess文件將是完美的解決方案(無需重新啓動服務器),所以我把我的版本庫的目錄/ var /網絡/的git/gitrepo一個簡單的.htaccess:
Require User test2
從理論上講,克隆/推送使用test1的更改應該被禁止,但它仍然有效。事實證明,.htaccess被忽略了,因爲無論我放在那裏,如果我通過身份驗證,我都可以克隆存儲庫。
我認爲ScriptAliasMatch可能存在問題,也許所有處理都轉到git-http-backend exec,並且它不會返回到Apache,因爲它重定向了所有流量?我在Apache中是一個相當新手,所以它可能是一個簡單的故事,但請 - 幫助! :)
更新1:是的,是的AllowOverride爲在/ var/WWW/git的主配置設置爲 「所有」:
<Directory "/var/www/git">
AllowOverride All
</Directory>
我想知道是否有什麼可以在這裏完成(我想我會加入郵件列表),但我只是想說我切換到Gitolite,它的作品像魅力:) –