限制特定用户对 SVN 文件夹的访问

限制特定用户对 SVN 文件夹的访问

我已经创建了该文件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/repositoryhttp://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 --> 设置 --> 已保存数据”下的身份验证数据对我来说是有效的。

相关内容