如何配置DAV svn访问?

时间:2011-07-19 10:17:07

标签: svn

我正在尝试限制对本地subversion服务器上的存储库的访问。我使用Apache和dav_svn_module以及authz_svn_module进行了设置。目前它工作得很好,用户登录,并且可以提交。

我想要实现的是单个存储库,只能由单个用户读取和写入。

我的/etc/httpd/conf.d/subversion.conf如下

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn

   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL

      AuthType Basic
      AuthName "Subversion repositories"
      AuthUserFile /etc/svn-auth-users
      Require valid-user
      AuthzSVNAccessFile /etc/svnauthz.conf
   </LimitExcept>
</Location>

我的/etc/svnauthz.conf如下所示,

[groups]
devs = david.yell,user2,user3

[/]
$authenticated = rw
@devs = rw
* =

但是,目前这限制了对服务器上每个存储库的访问,这不太理想。如何将访问配置为特定于单个存储库?

另外,这是一个内部服务器,所以虽然我很欣赏制作方面的建议,但这并不重要。

更新
我现在更新了我的svnauthz.conf文件,

[groups]
devs = david.yell,user2,user3

[ProtectedRepo:/]
david.yell = rw
* = 

[/]
$authenticated = rw
@devs = rw
* =

我正在尝试将此作为参考,http://svnbook.red-bean.com/en/1.4/svn.serverconfig.pathbasedauthz.html,但它引用了此处

  

更具体一点:section-names的值是其中之一   表格[repos-name:path]或表格[path]。如果你正在使用   SVNParentPath指令,然后指定存储库很重要   您的部分中的名称。如果你省略它们,那么一节就像   [/ some / dir]将匹配每个存储库中的路径/ some / dir。

这是否意味着我需要在服务器上声明每个repo?目前约有30个

1 个答案:

答案 0 :(得分:1)

  

设置每个目录的访问控制,以区分每个WEBDAV存储库/路径的用户权限。

     

在Apache的情况下,需要加载mod_authz_svn模块,然后添加指向您自己的规则文件的AuthzSVNAccessFile指令(在httpd.conf文件中)。 (有关完整说明,请参阅“每个目录访问控制”一节。)如果您正在使用svnserve,那么您需要使authz-db变量(在svnserve.conf中)指向您的规则文件

     

可以使用第二个Apache httpd模块mod_authz_svn设置更细粒度的权限。此模块抓取从客户端传递到服务器的各种不透明URL,要求mod_dav_svn对其进行解码,然后可能会根据配置文件中定义的访问策略否决请求。

     

如果您已从源代码构建Subversion,mod_authz_svn将自动构建并与mod_dav_svn一起安装。许多二进制发行版也会自动安装它。要验证它是否已正确安装,请确保它在httpd.conf中的mod_dav_svn的LoadModule指令之后出现:

<强>参考