使用SVN对多个项目进行访问控制

时间:2009-10-07 07:49:33

标签: svn

我是SVN新手并尝试为SVN上的多个项目配置访问控制。我想使用单个密码文件和单个身份验证文件来进行所有项目的访问控制。但是,它不起作用。以下是我的配置。 我的目录结构:

/srv
|--svn
   |--repos
      |-- conf
          |-- passwd
          |-- authz
      |-- projectX
      |-- projectY
      |-- projectZ

projectX的projectX / conf / svnserve.conf条目:

[general]
anon-access = none
auth-access = write
password-db = /srv/svn/repos/conf/passwd
authz-db = /srv/svn/repos/conf/authz
realm = Project Repository

相同的配置用于projectY和projectZ。 / srv / svn / repos / conf / passwd:

的条目
[users]
user1 = password
user2 = password
user3 = password

/ srv / svn / repos / conf / authz:

的条目
[/]
* = 
user1 = rw
[projectX:/]
user2 = rw
user3 = r
[projectY:/]
user3 = rw
user2 = r
[projectZ:/]
user2 = r
user3 = r

因此,user2应具有对projectX的读写访问权限,而user3应具有对projectX的只读访问权限。但是,只有user1可以访问所有这些存储库。 user2和user3永远不能访问任何存储库。每次出现错误消息:提交失败(授权失败!) 有谁可以帮我找到我的错误? 我在服务器上使用版本1.6.5的Subversion,在客户端上使用1.6.4。

4 个答案:

答案 0 :(得分:1)

我在Subversion 1.4中成功使用了这个结构:

Subversion
|-- Config
    |-- a-users
    |-- b-users
|--Repositories
    |-- x-repos
        |-- conf
            |-- svnserve.conf
    |-- y-repos
        |-- conf
            |-- svnserve.conf

...其中svnserve.conf文件包含如下所示的行:

password-db = ../../../Config/a-users

这样我就可以为任意数量的存储库使用一个password-db文件,或者我可以为每个存储库分别使用一个password-db文件。

如果您使用的是Subversion> 1.4,您需要了解新版本中配置的更改方式。有一点是,至少在1.4中,相对路径确实有效。希望这会有所帮助。

更新:我在使用unix(Mac OS X)。

答案 1 :(得分:0)

我认为,行

* = 

造成你的麻烦。 此外,我建议使用[groups]部分并将您的用户添加到组中,即使您当前每个组只有一个用户也是如此。

答案 2 :(得分:0)

我认为这是因为user2和user3无法访问[/].

这只是我的猜测;我真的不知道如何配置SVN。

答案 3 :(得分:0)

确保您在authz和客户端URL上都拥有存储库的CaSe(projectX ...)。当使用authz时,Subversion有一个nasty issue,其中 格式中的签出,但提交区分大小写。

以下是一个例子:

svn co svn://server/projectx/trunk .  // success
... // do work
svn ci // fail 


svn co svn://server/projectX/trunk .  // success
... // do work
svn ci // success 

我还遇到了一个问题,即authz和passwd中的最后一行不是空行,即将CRLF添加到最后一行修复它。那是很久以前的事情,所以也许现在已经解决了。