2011-07-19 130 views
1

我想限制访问我的本地Subversion服务器上的存储库。我已经使用Apache和dav_svn_moduleauthz_svn_module进行设置。目前它运行良好,用户登录,并可以提交罚款。如何配置DAV svn访问?

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

/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但在这里引用

更具体:部分名称的值是 表单[repos-name:path]或表单[path]中的任一个。如果您使用的是 SVNParentPath指令,则在部分中指定存储库 名称很重要。如果你忽略它们,那么像 [/ some/dir]这样的部分将匹配每个存储库中的路径/ some/dir。

这是否意味着我需要声明服务器上的每一个回购?目前约有30个

+1

设置对用户存储库/路径的访问权限。 http://svnbook.red-bean.com/en/1.4/svn.serverconfig.pathbasedauthz.html –

+0

感谢您的链接,我现在有这个设置。然而,我的'受保护;回购将不允许访问。 –

+0

只需要说一下你使用的“$ authenticated”语法:我不知道这是存在的。这是记录在某处吗?我只能在http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_repos/authz.c找到它 –

回答

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中的mod_dav_svn的LoadModule指令后面。CONF:

参考