Проблема с блокировкой svn и AuthzSVN при авторизации на основе пути

Я пытаюсь настроить авторизацию на основе исправлений в SVN с использованием LDAP и AuthzSVNAccess, и мой первоначальный тест состоял в том, чтобы просто предоставить всем пользователям доступ на чтение / запись, чтобы убедиться, что конфигурация работает правильно.

У меня есть Apache Conf как:

<Location /svn/>
    AuthName  "Login with LDAP"
    AuthType Basic
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative on
    AuthLDAPURL ldap://XXX.com:389/ou=XXX,dc=XXX,dc=XXX,dc=XXX?uid
    SVNParentPath /var/www/svn
    AuthzSVNAccessFile /var/www/svn/authorization.access
    Satisfy Any
    require valid-user
</Location>

У меня есть различные репозитории SVN, которые живут прямо в / var / www / svn.

И authorization.access выглядит так:

[/]
* = rw

Это определенно вступает в силу, если бы я изменил его на * = r тогда я больше не могу коммитить, поэтому я счастлив, что Apache использует файл.

Тем не менее, пока я могу оформить заказ, зафиксировать, повторно просмотреть, обновить, я больше не могу svn lock любые файлы я получаю сообщение об ошибке:

Error: Server sent unexpected return value (401 Authorization Required) in response to LOCK request for '/svn/MyRepo/MyFile.txt'.

Кто-нибудь знает, нужна ли дополнительная конфигурация для svn lock а AuthzSVN? Есть ли другое разрешение, кроме rw что мне может понадобиться? Или, возможно, что-то не так в моем текущем конфиге.

Спасибо, Майк.

1 ответ

Решение

Пара вопросов, которые я вижу.

1) Вам не хватает директивы DAV. Однако, исходя из того, что вы говорите, я предполагаю, что это просто упущение того, что вы разместили здесь.

2) Satisfy any вероятно источник вашей проблемы. Satisfy any делает или разрешает правила авторизации. Таким образом, либо mod_authz_svn разрешает доступ, либо вам предлагается ввести пароль. Вы действительно хотите использовать только Satisfy any когда вы хотите разрешить анонимный и аутентифицированный доступ. Если вы хотите вести себя так, чтобы все работало правильно, вам нужно будет удалить анонимный доступ для записи. Я бы предложил следующий упрощенный файл authz для тестирования:

[/]
$anonymous = r
$authenticated = rw

Причина, по которой вы получаете 401, заключается в том, что Subversion не поддерживает анонимные блокировки. Поэтому он пытается заставить вас пройти аутентификацию. Но из-за Satisfy any директива аутентификация паролем никогда не вступает в игру.

3) Тот факт, что вы получаете 401, означает, что вы используете версию Subversion, которая не устарела. В частности, вы должны получить 501 Не реализовано, так как 401 фактически был вовлечен в уязвимость безопасности ( CVE-2013-1847).

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

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