Механизм пересылки пользователей в ScriptAliasMatch

Я следую этому руководству, чтобы настроить 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 будет заменен первой подходящей группой регулярного выражения перед ним. Для меня это захватывает от (? X) ^ /(. * To))$, поэтому здесь нет ничего о пользователе.

Моя основная проблема заключается в том, что USER в моем скрипте пусто, поэтому я не получаю авторизации в gitolite. Я передаю свое имя пользователя apache через обычную аутентификацию:

<Location />
   # Crowd auth 
   AuthType Basic
   AuthName "Git repositories"
   ...
   Require valid-user
</Location>

определено только под предыдущим ScriptAliasMatch.

Так что мне действительно интересно, как это должно работать и какую часть механизма я пропустил, чтобы я не смог найти пользователя в моем скрипте.

1 ответ

Решение

Я нашел решение после https://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

к моей конфигурации Apache и использования $REMOTE_USER в моем скрипте, который действительно содержит аутентифицированное имя пользователя. Мне действительно интересно, как пример в учебнике должен работать.

Другие вопросы по тегам