我已经无数次地遵循了颠覆性的书,试图在我们的Subversion服务器上设置正确的path授权,但是我一直无法做到这一点。 这是我的访问规则文件:
[groups] sales-admin = alexa, miked, chrism [/] $authenticated = rw [Product_Sales:/] ~@sales-admin =
这个应该做的就是让所有通过authentication的用户访问这个服务器上托pipe的每个存储库,但是限制Product_Sales存储库对销售pipe理员组的读写权限。 但是,实际情况并非如此,我的权限都没有正常工作。 以下是在每个用例中发生的事情:
当我尝试更新,提交或从任何其他仓库签出时,我得到一个“访问被禁止”的错误,即使从TortoiseSVN清除我保存的凭据没有给予任何选项进行身份validation。
$authentication令牌不起作用。 如果我用“* = rw”replace“$ authenticated = rw”,我又重新获得访问权限,但是我不再要求login,即使我没有提供任何凭证。 尝试提交确实强制我login,但是我需要在与存储库进行交互(包括只读操作)时始终进行身份validation。
即使我在服务器的根目录中设置了* = rw,在Product_Sales存储库上设置权限也不会让我访问Product_Sales。
我需要知道我的访问规则有什么问题。 过去几年来,我已经尝试过几次使path授权工作,但是无济于事。 如果有人能帮我一把,我会很感激的。 我只是想知道我在Subversion书中对基于path的authentication解释有什么误解。
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html
编辑 :这是我的颠覆服务器信息
Collabnet Subversion Edge 3.2.2-3395.103
Subversion 1.7.8-3395.103
我还没有确定的答案,但只有一些想法
如果我用“* = rw”replace“$ authenticated = rw”,我又重新获得访问权限,但是我不再要求login,即使我没有提供任何证书
* = rw意思是“每个人都可以读写”,每个人都是“甚至是匿名的”。 你有基于Apache或svnserve的SVN服务器? 在Apache的情况下,您必须(在Apachepath访问之前,必须限制对存储库的访问)
而且,顺便说一句,魔术令牌适用于SVN 1.5+(有任何机会有更旧的版本?)
更新
debugging过程
DAV svn
SVNListParentPath on
SVNParentPath ...
AuthName ...
AuthType Basic
AuthBasicProvider file
AuthUserFile ...
# AuthzSVNAccessFile ...
Require valid-user
在这个configuration中, 只有 AuthUserFile中列出的用户才能完全访问任何回购,回购的任何部分
添加基于path的检查,取消注释AuthzSVNAccessFile。 由于使用configuration匿名用户将不会有任何回购的访问, $authenticated令牌变得过度,$authentication== *在这个禁区
对于[Product_Sales:/]规则“只有一个组有访问权限”,我更喜欢防弹重载的定义
[Product_Sales:/]
* =
@sales-admin = rw
也就是说,所有访问都被明确禁用,只有一个组在同一显式样式中被启用