我已经修改了SVN服务器上的authz文件,以启用基于路径的授权。在为存储库中的分支指定授权设置时,我遇到了一个问题。这是我的authz文件的样子:
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
firmware_team = eddie,jackson
contractors = frank,max
# Provide default access here for entire repository
[/]
* =
@firmware_team = rw
# Define access here for the myrepo repository
[myrepo:/]
@contractors = r
[myrepo:/branches/contractor_branch/]
@contractors = rw
因此,默认情况下,我为所有人提供对我的存储库的只读访问权限,同时还为firmware_team
组提供默认的读/写访问权限。
这里的问题是,当我添加以下行以启用对存储库特定分支的授权时,firmware_team组将被禁止提交到myrepo
干线:
[myrepo:/branches/contractor_branch/]
@contractors = rw
如果我这样注释掉这些行:
# [myrepo:/branches/contractor_branch/]
# @contractors = rw
然后,允许固件团队再次访问中继。我不确定为什么会发生这种情况,有人可以启发我吗?
尽管在SVN书中我发现有趣的一件事是这一行:
组成员的权限只能扩展到 群组已拥有的权限。限制属于 分组到小于他们组的权限是不可能的。
这使我认为,如果我要给一个组对整个存储库的读/写访问权限,那么仅向该存储库的分支添加特定授权就不会导致该组失去对所述存储库主干的访问权限。
答案 0 :(得分:0)
我弄清楚了我遇到的问题。指定基于路径的存储库授权时,必须在存储库末尾省略斜杠。例如:
此:
[myrepo:/branches/contractor_branch/]
@contractors = rw
应这样设置:
[myrepo:/branches/contractor_branch]
@contractors = rw
很奇怪,这仅适用于除存储库根目录以外的任何内容。所以这个:
[myrepo:/]
@contractors = r
仍然有效,因为它指向根。