过去几个月来,我一直在使用svn(使用默认的身份validation规则),直到最近我才决定增加对存储库身份validation的控制。 我一直在浏览这本书( http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.serverconfig.pathbasedauthz ),我想我明白我在做什么。 所以,我已经开始configuration回购。 但是,我似乎有authentication用户的问题。
我在workserver.com上有一个服务器,repo位于/home/repoAdminUser/svnroot/目录下(因为我没有root权限访问workserver.com)。 我已经更改了configuration文件,如下所示:
`/home/repoAdminUser/svnroot/conf/svnserve.conf`: anon-access = none password-db = passwd authz-db = authz `/home/repoAdminUser/svnroot/conf/passwd`: [users] admin1=pass1 admin2=pass2 otheruser1=pass3
现在,我想添加权限,使所有pipe理员用户都具有读/写能力,而其他用户将只能访问特定的中继。 所以,我尝试了以下
`/home/repoAdminUser/svnroot/conf/authz`: [groups] admins=admin1,admin2 other1=otheruser1,otheruser2 #etc ... [/] @admins=rw [/project1/trunk] @other1=r
那么,当我尝试检查出以下任一目录:
svn co --username admin1 --password pass1 svn+ssh://workserver.com/home/repoAdminUser/svnroot/anyproject/directory
要么
svn co --username otheruser1 --password pass3 svn+ssh://workserver.com/home/repoAdminUser/svnroot/project1/trunk
我收到“svn:Authorization Failed”错误消息。 事实上,我发现获取任何结帐的唯一方法是让通配符用户(每个人)访问一个特定的目录:
[/any-directory] * = r
这将允许任何用户(匿名或authentication)能够检出目录。 我究竟做错了什么? 而且,我怎样才能解决这个问题,以便我有前面提到的所需结构。 感谢您的帮助!
我不知道,但你可以请尝试添加auth-access = write在anon-access = none之下,看看它是否工作。
这可能是bug 3242 – 客户端在获取403的仓库的根目录下发出一个OPTIONS请求。你的访问被拒绝到/ svnroot /或/ svnroot / project1 /? (如果不在消息中,请检查apache日志。)
解决scheme?
如果不是这样,请告诉我们您正在运行的客户端和服务器版本。 谢谢!