多个svn存储库权限

时间:2011-03-04 19:03:30

标签: svn apache authentication version-control virtualhost

我在服务器上配置了两个存储库站点。第一个是/home/svn/repoA,第二个是/home/svn/repoB

我在Apache上使用以下信息构建了一个虚拟主机:

<Location />
    DAV svn
    SVNParentPath /home/svn
    AuthType Basic
    AuthName "Servidor SVN"
    AuthUserFile /etc/apache2/dav_svn.passwd
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
</Location>

现在这个URL,我可以使用http://svn.mydomain.com/repoAhttp://svn.mydomain.com/repoB访问服务器,但我想让repoB变为私有,只允许使用先前使用htpasswd创建的用户和密码进行访问在dav_svn.passwd。

如果我取出<LimitExcept GET PROPFIND OPTIONS REPORT>行,并且它是更接近的标记,它会询问用户和密码,但是在两个存储库中。

有没有办法让一个只能用于匿名和读/写的已登录用户,而第二个存储库只有已登录用户的读/写权限?

2 个答案:

答案 0 :(得分:2)

你用了多少资源来实现这一目标?我知道有一本免费的Subversion书籍(Subversion版本控制),里面有答案:

Apache authn / authz:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz

基于路径的authz:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html

答案 1 :(得分:1)

我只有2个位置块。 RepoA应该在Apache位置块中打开“Satisfy Any”以进行匿名只读访问,并使用相应的Auth文件进行匿名访问。 RepoB的Auth文件应该拒绝匿名访问。

Apache repoA conf

<Location /repoA>
  DAV svn
  SVNPath /home/svn/repoA
  AuthType Basic

  Satisfy Any
  AuthName "Servidor SVN"
  AuthUserFile /etc/apache2/dav_svn.passwd
  AuthzSVNAccessFile /path/to/authFileA
</Location>

authFileA

[/]
* = r

[/repoA]
* = r
mark = rw
bill = rw

Apache repoB conf

<Location /repoB>
  DAV svn
  SVNPath /home/svn/repoB
  AuthType Basic
  AuthName "Servidor SVN"
  AuthUserFile /etc/apache2/dav_svn.passwd
  AuthzSVNAccessFile /path/to/authFileB
</Location>

authFileB

[/]
* =

[/repoB]
* = 
mark = rw
bill = rw