gpt4 book ai didi

带有 AuthzUnixGroup 的 git-http-backend 无法正常工作

转载 作者:太空狗 更新时间:2023-10-29 13:35:55 25 4
gpt4 key购买 nike

我正在尝试在安装了 git 的 CentOS 6 机器上通过我的 Apache 2.2 设置一个 git 存储库。我尝试过遵循许多不同的方向,但我不知所措。我目前的情况包括能够 clone正常,但完全无法 push 。

似乎我无法让身份验证位正常工作,因为我通常可以在设置 http.receivepack 时执行推送至 true .

我已经安装了AuthzUnixGroup以及mod_authz_external .

我去了/var/www/git并创建了一个名为 my-repo.git 的 repo 协议(protocol)并做了一个git init --bare里面。

然后我设置我的 git.conf里面的文件/etc/httpd/conf.d/如下:

<VirtualHost "*:80">
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias /git /usr/libexec/git-core/git-http-backend
AddExternalAuth pwauth /usr/local/libexec/pwauth
SetExternalAuthMethod pwauth pipe

<Directory "/usr/libexec/git-core/">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>

<Location "/git">
AuthzUnixGroup on
AuthType Basic
AuthName "Git repository"
AuthBasicProvider external
AuthExternal pwauth
Require group git
</Location>

</VirtualHost>

将我的网络浏览器指向 mysite/git很好地向我展示了 HTTP 基本登录对话框,它工作得很好。我已将自己加入群组 git ,然后做一个 groups在我的外壳上返回:

naseri sudo git

这符合预期。

当我做 git clone http://mysite/git/my-repo.git我从 /var/logs/httpd/access_log 下 httpd 的 access_log 文件中得到以下内容:

2.177.130.21 - - [11/Jun/2014:18:51:07 +0000] "GET /git/my-repo.git/info/refs?service=git-upload-pack HTTP/1.1" 401 480 "-" "git/1.8.5.2 (Apple Git-48)"
2.177.130.21 - - [11/Jun/2014:18:51:08 +0000] "GET /git/my-repo.git/info/refs?service=git-upload-pack HTTP/1.1" 401 480 "-" "git/1.8.5.2 (Apple Git-48)"
2.177.130.21 - naseri [11/Jun/2014:18:51:08 +0000] "GET /git/my-repo.git/info/refs?service=git-upload-pack HTTP/1.1" 200 256 "-" "git/1.8.5.2 (Apple Git-48)"
2.177.130.21 - naseri [11/Jun/2014:18:51:09 +0000] "POST /git/my-repo.git/git-upload-pack HTTP/1.1" 200 368 "-" "git/1.8.5.2 (Apple Git-48)"

在客户端,clone荷兰国际集团工作正常。我改变了一些东西,然后在 git push 提交后尝试推送阅读内容。

这是我在服务器端日志中得到的:

2.177.130.21 - - [11/Jun/2014:18:53:26 +0000] "GET /git/my-repo.git/info/refs?service=git-receive-pack HTTP/1.1" 401 480 "-" "git/1.8.5.2 (Apple Git-48)"
2.177.130.21 - naseri [11/Jun/2014:18:53:27 +0000] "GET /git/my-repo.git/info/refs?service=git-receive-pack HTTP/1.1" 401 480 "-" "git/1.8.5.2 (Apple Git-48)"
2.177.130.21 - naseri [11/Jun/2014:18:53:30 +0000] "GET /git/my-repo.git/info/refs?service=git-receive-pack HTTP/1.1" 403 - "-" "git/1.8.5.2 (Apple Git-48)"

我可以看到 Apache 在响应的第一行 (401) 发回了我的“需要身份验证”响应,但客户端向我显示:

fatal: unable to access 'http://mysite/git/my-repo.git/': The requested URL returned error: 403

我对这个问题一无所知,因为将我的浏览器指向相同的 URL 会正确地进行身份验证,而且它甚至可以正常工作。

最佳答案

older answer

git-http-backend is returning a 403/Forbidden code when the client asks to use the git-receive-pack method.
It then falls back to WebDAV, but using WebDAV is not necessary.

I had the same problem; in my case this was due to REMOTE_USER not being set

自从我的任何 Apache config在设置变量时使用 '=',检查它是否更好:

SetEnv REMOTE_USER $REDIRECT_REMOTE_USER

(两个变量之间没有'-')

同时检查(重新)定义 REMOTE_USER 是否也有效(因为它可能已经被定义,而 REDIRECT_REMOTE_USER 可能不会):尝试没有那条线。
我永远不必在我的 Apache Git 配置中定义它。

备注:with Git 2.21 (Q1 2019, 5+ years later), Git should be more robust .

关于带有 AuthzUnixGroup 的 git-http-backend 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24170537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com