git push 通过智能 HTTP 失败,出现 403

git push 通过智能 HTTP 失败,出现 403

这让我很抓狂。我在 Lucid Ubuntu 上运行 git 1.7.8.rc4 和 Apache/2.2.14,并设置了 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>

我发现有关“服务器配置拒绝客户端”的所有内容都说“将‘订单允许、拒绝/允许所有人’添加到正确的目录条目中。”它在那里,但仍然不起作用。有什么想法吗?我知道我真的很接近了,而且可能非常简单。

答案1

已解决。问题出在 LocationMatch 块中:

Order deny,allow
Deny from all

导致 403 错误。将其更改为目录块中的允许,它会更改为 401,这原来是 LDAP 身份验证的问题。我将 AuthBasicProvider 更改为“外部”,并按照 (pyxzl.net/store/authnz.php

相关内容