我正在按照本教程来设置gitolite,并在某些时候使用以下ScriptAliasMatch:
ScriptAliasMatch \ "(?x)^/(.*/(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))$" \ /var/www/bin/gitolite-suexec-wrapper.sh/$1
目标脚本开始
USER=$1
所以我猜这是用来将用户名从Apache转发到suexec脚本(这确实需要它)。 但是我不明白这是怎么完成的。 ScriptAliasMatch文档使我认为/$1将被第一个匹配的正则expression式的匹配组取代。 对我来说,它从(?x)^ /(。* to) ) $捕获,所以这里没有关于用户的信息。
我的根本问题是USER在我的脚本是空的,所以我没有在gitolite授权。 我通过基本身份validation给我的用户名到Apache:
<Location /> # Crowd auth AuthType Basic AuthName "Git repositories" ... Require valid-user </Location>
在之前的ScriptAliasMatch下定义。
所以我真的想知道这应该如何工作,我错过了什么机制的一部分,所以我不检索我的脚本中的用户。
我发现以下解决schemehttps://stackoverflow.com/questions/3817478/setting-up-git-server-on-windows-with-git-http-backend-exe和https://stackoverflow.com/questions/8021167 / git-debian-apache-and-smart-http是要添加的
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
到我的Apacheconfiguration,并在我的脚本中使用$REMOTE_USER ,其中确实包含经过身份validation的用户名。 我真的想知道如何在教程中的示例应该工作。