我已经创建了该文件svn.password
并添加了一些用户。
现在我安装了一个颠覆存储库和一个追踪vhost.conf
实例到我的 apache 文件夹并进行如下设置:
<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 文件夹的完全访问权限。
我究竟做错了什么?
答案1
在你的 Apache 配置中,首先启用mod_authz_svn
模块
加载模块 authz_svn_module 模块/mod_authz_svn.so
然后在里面<Location /svn>
使用AuthzSVNAccessFile
指令
AuthzSVNAccessFile /var/www/vhosts/xyz.com/svn/repository/conf/authz
答案2
我遇到过类似的问题,但最终问题不是出在 SVN 服务器上的身份验证设置上,而是出在一直在缓存身份验证数据的 SVN 客户端“Tortoise”上。因此,在 OP 的示例中,即使我通过 Tortoise 以用户“test”身份登录,它也会使用先前登录的用户“ihaveaccess”的访问规则。清除“TortoiseSVN --> 设置 --> 已保存数据”下的身份验证数据对我来说是有效的。