2013-11-22 10 views
0

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

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

<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, которые живут непосредственно в/вар/WWW/СВН.

И 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 Not Implemented, так как 401 фактически задействован в уязвимости безопасности (CVE-2013-1847).

Так что я рекомендую вам upgrade to Subversion 1.7.13 or 1.8.4. Если вы не хотите создавать свои собственные пакеты, я бы порекомендовал один из many sources of binary packages.

+0

У меня нет директивы DAV, и все работает нормально. Я предполагаю из-за конфигурации LDAP. Удовлетворить любой намек было абсолютно пятно на хотя и исправил мою проблему. Спасибо. В настоящее время мы только на SVN 1.6, и обновление на столе в ближайшем будущем, спасибо за совет. – mleonard87

+0

В блоке «Место» всегда должна быть директива «DAV SVN», в которой вы настраиваете Subversion для ответа. Это не имеет никакого отношения к аутентификации. Он сообщает mod_dav, какой провайдер должен использовать. Без него по умолчанию является mod_dav_fs, но вам нужно mod_dav_svn для Subversion работать правильно. У вас может быть это где-то еще в вашей конфигурации, но это может вызвать проблемы, если вы попытаетесь использовать любой другой путь на сервере, так как тогда mod_dav попытается его обслуживать. –