我正在尝试限制对本地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个
答案 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指令之后出现:
<强>参考强>