Проблема с блокировкой 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. Если вы не хотите создавать свои собственные пакеты, я бы порекомендовал один из множества источников бинарных пакетов.