Я создал файл svn.password и добавил несколько пользователей.

Теперь я установил репозиторий Subversion и экземпляр Trac в свою папку apache и настроил vhost.conf следующим образом:

<Location /svn>
   DAV svn
   SVNParentPath /var/www/vhosts/xyz.com/svn/
   AuthType Basic
   AuthName "SVN"
   AuthUserFile /var/www/vhosts/xyz.com/svn.password
   Require valid-user
</Location>
<Location /trac/>
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnv /var/www/vhosts/xyz.com/trac/
   PythonOption TracUriRoot /trac/
</Location>
<Location /trac/login>

Все работает гладко, я могу получить доступ к http://www.xyz.com/svn/repository и http://www.xyz.com/trac/ с любым из пользователей, которых я добавил.

Теперь вот моя проблема. Теперь я хотел бы ограничить доступ к определенным папкам в моем хранилище для определенных пользователей. Я хочу один репозиторий для Trac, но некоторые разработчики будут работать только над определенными проектами. Таким образом, в моей папке ./svn/repository/ есть папка xyz_server и папка xyz_client.

Теперь я изменяю /var/www/vhosts/xyz.com/svn/repository/conf/authz и устанавливаю следующее:

[/repository/xyz_server]
* =
test = rw
ihaveaccess = rw

[/repository/xyz_client]
ihaveaccess = rw

Теперь я предполагаю, что если я попытаюсь получить доступ к http://www.xyz.com/svn/repository/xyz_client/ с помощью пользовательского test это не сработает. Только если я попытался получить доступ к http://www.xyz.com/svn/repository/xyz_server/ меня должны были быть права на чтение и запись.

Однако у меня есть полный доступ к папкам SVN.

Что я делаю неправильно?

2 ответа2

0

У меня были похожие проблемы, но в конце концов проблема была не в настройках аутентификации на сервере SVN, а в моем клиенте SVN "Черепаха", который кэшировал данные аутентификации. Таким образом, в примере OP, даже если я вошел в систему как пользователь "test" через Tortoise, он будет использовать правила доступа для ранее вошедшего в систему пользователя "ihaveaccess". Очистка данных аутентификации в «TortoiseSVN -> Настройки -> SavedData» работала для меня.

0

В вашей конфигурации apache начните с включения модуля mod_authz_svn

LoadModule authz_svn_module modules/mod_authz_svn.so

Затем внутри <Location /svn> используйте директиву AuthzSVNAccessFile

AuthzSVNAccessFile /var/www/vhosts/xyz.com/svn/repository/conf/authz

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .