Назад | Перейти на главную страницу

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

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

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

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

определен непосредственно под предыдущим ScriptAliasMatch.

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

Я нашел решение после 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 в моем сценарии, который действительно содержит аутентифицированное имя пользователя. Мне действительно интересно, как должен работать образец в руководстве.