我已经设置了一个 Apache 服务器,用于托管 gitolite。我已遵循本指南,但是当访问服务器时我得到 403,并且 apache 错误日志包含以下行:
[错误] [客户端 192.168.0.97] 服务器配置拒绝客户端:/var/www/bin/gitolite-suexec-wrapper.sh
据我所知,这意味着 apache 用户无法打开包装器脚本?大多数详细说明“服务器配置拒绝客户端”消息的页面都提到了需要 的目录Allow from all
,但由于该/var/www/bin/
目录甚至不应该被浏览,我想这应该不是问题吧?
vhost 配置的 suexec 部分如下所示:
SuexecUserGroup git git
ScriptAlias /git/ /var/www/bin/gitolite-suexec-wrapper.sh/
ScriptAlias /gitmob/ /var/www/bin/gitolite-suexec-wrapper.sh/
我在 gentoo 3.10.7 服务器上运行 gitolite 3.5.2 和 apache 2.2.25。Apache 在用户 下运行apache
,gitolite 在 下运行git
。这些是 suexec 目录的访问权限:
# ls -la /var/www/bin/ /var/www/git/
/var/www/bin/:
total 12
drwxr-xr-x 2 git git 4096 Dec 9 21:26 .
drwxr-xr-x 5 apache root 4096 Dec 9 21:25 ..
-rwx------ 1 git git 249 Dec 9 21:27 gitolite-suexec-wrapper.sh
/var/www/git/:
total 8
drwxr-xr-x 2 apache apache 4096 Dec 9 21:25 .
drwxr-xr-x 5 apache root 4096 Dec 9 21:25 ..
我还应该检查什么?
答案1
我“修复”了它,尽管我觉得这像是一次黑客攻击。我添加了这个
<Directory /var/www/bin>
Order allow,deny
Allow from all
</Directory>
... 到 vhost 配置。我猜想这其实没有必要,因为打开此目录并不是一个实际的客户端请求?
我还必须重新映射我的 git 用户和组,因为 suexec 被编译为强制 uid/gid > 1000,但是 gentoo 安装程序使它们成为系统帐户,从而产生了一个低 id。