Apache-2.2

git push over smart HTTP 失敗,出現 403

  • March 31, 2015

這一直讓我發瘋。我在 Lucid Ubuntu 上使用 Apache/2.2.14 執行 git 1.7.8.rc4,並設置了 LDAP 身份驗證。身份驗證似乎工作正常,我可以拉,但我不能在沒有 403 錯誤的情況下推動。

[Fri Dec 16 20:04:25 2011] [error] [client 10.60.226.130] client denied by server configuration: /opt/tools/libexec/git-core/git-http-backend

我的 apache 站點文件:

SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

ScriptAlias /git/ /opt/tools/libexec/git-core/git-http-backend/

<Directory "/opt/git">
       Options -Indexes FollowSymLinks
       AllowOverride AuthConfig FileInfo
       Order allow,deny
       Allow from all
</Directory>

<Directory "/opt/tools">
 AllowOverride None
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
</Directory>

<LocationMatch "^/git/.*/git-receive-pack$">
       Order deny,allow
       Deny from all
       AuthName "GIT Repo"
       AuthType Basic
       AuthBasicProvider ldap
       AuthzLDAPAuthoritative off
       AuthLDAPURL "ldap://10.59.10.40:389/dc=shopping,dc=com"
       Require valid-user
</LocationMatch>

我找到的關於“客戶端被伺服器配置拒絕”的所有內容都說“將’命令允許,拒絕/允許所有人’添加到正確的目錄條目。” 它在那裡,但仍然無法正常工作。有任何想法嗎?我知道我真的很親密,可能是超級簡單的事情。

解決了。問題出在 LocationMatch 塊中:

Order deny,allow
Deny from all

導致403錯誤。將其更改為允許在目錄塊中,它更改為 401,結果證明這是 LDAP 身份驗證的問題。我將 AuthBasicProvider 更改為“外部”並按照(pyxzl.net/store/authnz.php)使用 pwauth

引用自:https://serverfault.com/questions/341829