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

Аутентификация в Apache2 с помощью mod_dav_svn

У меня возникли проблемы с настройкой аутентификации в Apache2 для репозитория SVN, который обслуживается с помощью mod_dav_svn.

Вот моя конфигурация Apache для каталога:

<Location /svn>
    DAV svn
    SVNParentPath /var/svn/repos

    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/apache2/dev.passwd
    Require valid-user
</Location>

я могу использовать svn с проектами под /var/svn/repos, поэтому я знаю, что DAV работает, но когда я делаю обновления svn или фиксирую (или что-то еще), Apache не запрашивает никакой аутентификации ... Он делает то же самое, независимо от того, есть ли директивы Auth или нет.

Разрешения на каталог репозитория (и все подкаталоги / файлы) дают разрешение только на www-data (пользователь / группа Apache2).

Я также удостоверился, что все соответствующие модули включены (в частности, включен mod_auth, как и все модули mod_dav *).

Любые идеи, почему svn команды не аутентифицируются?

Заранее спасибо.

Вы пробовали создать не-dav_svn (в основном обычный веб-каталог) и проверить, работают ли разрешения?

Например, вы можете попробовать что-то вроде этого:

<Location /test_auth>
    AuthType Basic
    AuthName "TEST TEST TEST"
    AuthUserFile /etc/apache2/dev.passwd
    Require valid-user
</Location>

Имеет ваш клиент Subversion кешированные учетные данные?

Несколько идей в порядке следствия:

  1. Проверьте файлы журнала, чтобы узнать, что происходит. Может быть, это прояснит проблему.
  2. Изменения конфигурации Apache требуют, чтобы вы перезагрузили Apache. Если вы этого не сделаете, ваши изменения никогда не будут приняты.
  3. Вы указали аутентификацию пользователя, но не авторизацию. Сделайте явный svn authz и добавьте его. Я не уверен, что делает SVN при отсутствии файла авторизации.
  4. Выпущен Ubuntu 10.04 LTS; Я бы рекомендовал обновление с 8.04 LTS. Это могло волшебным образом решить проблему между обновлениями ядра, SVN и apache.

Читать этот если вы еще этого не сделали.

Если это не сработает ...

Вы уверены, что нет никаких файлов .htaccess. Htpasswd не отменяет процедуру аутентификации в httpd.conf?

Apache имеет всеобъемлющую модель наследования разрешений, к которой довольно сложно привыкнуть. Если ваши разрешения установлены правильно, они могут быть заблокированы настройкой более низкого уровня в иерархии или переопределены чем-то более высоким в иерархии.

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

Похоже, у вас, скорее всего, есть какая-то перекрывающаяся конфигурация, которая мешает SVN работать должным образом.

Что происходит, когда вы просматриваете различные подкаталоги в репозитории с помощью веб-браузера? Всегда ли он запрашивает имя пользователя / пароль? Попробуйте использовать wget или curl для просмотра репозиториев из командной строки. Эти утилиты командной строки не хранят информацию о сеансе, поэтому вы можете быстро отправлять запросы на разные URL-адреса, быстро использовать разные имена пользователей и пароли и т. Д.

включить mod_info. mod_info создаст страницу (На http://www.example.org/server-info по умолчанию), который детально объединит всю вашу конфигурацию. Это позволяет увидеть, не перекрываются ли файлы конфигурации (например, находящиеся в /etc/apache2/conf/ и /etc/apache2/conf.d) вызывают проблемы.

Иногда бывает сложно разобраться в модели наследования Apache. Я нахожу это mod_info может помочь мне увидеть вещи немного яснее. В Удовлетворять директива может быть виновата.

Обязательно ограничьте mod_info, чтобы разрешить доступ только с вашего IP-адреса / сети.

Еще одно предложение: создать второй репозиторий с другим путем доступа и убедиться, что эти вещи полностью находятся за пределами пространства имен вашего первого репозитория. Это поможет устранить аномалии в вашем существующем репозитории SVN.

Что-то вроде этого:

<Location /svntest>
    DAV svn
    SVNParentPath /tmp/test/repos

    AuthType Basic
    AuthName "TEST"
    AuthUserFile /tmp/test/test.passwd
    Require valid-user
</Location>

Проблема все еще возникает? Если это так, то ваша проблема связана с странностью конфигурации в Apache. Если проблема не возникает с, то проблема связана с проблемой конфигурации с репозиториями Subversion в / var / svn / repos.