У меня есть несколько хранилищ Subversion, которые обслуживаются через Apache 2.2 и WebDAV. Все они расположены в центральном месте, и я использовал эту статью в качестве основы для debian-administration.org (хотя я отказался от использования аутентификации базы данных для простого файла htpasswd).
С тех пор я также начал использовать WebSVN . Моя проблема заключается в том, что не все пользователи в системе должны иметь доступ к различным репозиториям, и настройка WebSVN по умолчанию разрешает всем, кто может проходить аутентификацию.
Согласно документации WebSVN, лучший способ обойти это - использовать систему доступа к путям Subversion, поэтому я попытался создать ее, используя директиву AuthzSVNAccessFile.
Когда я делаю это, я получаю сообщения «403 Forbidden».
Мои файлы выглядят следующим образом:
У меня есть настройки политики по умолчанию в файле:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Каждый репозиторий получает файл политики, как показано ниже:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
Файл default_auth.conf содержит это:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
Я не совсем уверен, зачем мне нужен второй SVNParentPath в default_auth.conf, но я только добавил это сегодня, когда получал сообщения об ошибках в результате добавления директивы AuthzSVNAccessFile.
С полностью разрешающим файлом доступа
[/]
joebloggs = rw
система работала нормально (и практически не изменилась), но как только я начинаю пытаться добавить какие-либо ограничения, такие как
[sysadmin:/]
joebloggs = rw
вместо этого я снова получаю ошибки «Отказано в доступе». Записи файла журнала:
[Thu May 28 10:40:17 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET websvn:/
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET svn:/sysadmin
Что мне нужно сделать, чтобы заставить это работать? Неправильно ли настроены apache или мое понимание файла svnaccess.conf неверно?
Если я поступаю неправильно, у меня нет особой привязанности к моему общему подходу, поэтому не стесняйтесь предлагать альтернативы.
ОБНОВЛЕНИЕ (20090528-1600):
Я попытался реализовать этот ответ , но все еще не могу заставить его работать должным образом.
Я знаю, что большая часть конфигурации правильная, как я добавил
[/]
joebloggs = rw
в начале и «joebloggs» затем имеет весь правильный доступ.
Когда я пытаюсь перейти к репозиторию, делая что-то вроде
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
затем я получил ошибку отказа в разрешении для mickmurphy (joebloggs все еще работает), с ошибкой, похожей на ту, что я уже имел ранее
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
Кроме того, я забыл объяснить ранее, что все мои репозитории находятся под
/var/lib/svn/repository
ОБНОВЛЕНИЕ (20090529-1245):
Все еще не повезло заставить это работать, но все признаки, кажется, указывают на проблему с управлением доступом к пути в подрывной деятельности, не работающей должным образом. Я предполагаю, что я не настроил apache или svn для правильного распознавания структуры моего хранилища.
Это потому, что запись '[/]', кажется, работает отлично.
Мне также приходит в голову, что этот вопрос может лучше относиться к StackOverflow?
ОБНОВЛЕНИЕ (20090603-1740):
В ответ на один из комментариев к этому вопросу моей настройке WebDAV для самой Subversion указывается местоположение / svn / repos, но для websvn задано значение / websvn.