Subversion使用配置文件进行基于路径的授权,手工配置易于出错。 下面是一个错误百出的配置示例:
[groups] admin = &admin, admin1, admin2 group1 = @group2, user1 group2 = user2, @group1 [aliases] admin = jiangxin [/] @admin = rw [/trunk] $authenticated = rw [repos1:/] * = user1 = @group1 = r @admin = rw [repos1:/trunk/src] * = @group1 = rw @visiters = r
其中的错误或可能的错误有:
组的循环引用: group1包含了group2,而group2又反过来包含group1,造成循环引用。
包含未定义的组或者别名: 例如在 repos1 版本库的 /trunk/src 的策略中用到了 @visiters 组, 而该组没有在[groups]小节中定义;
潜在的配置错误: 版本库repos1的根路径,欲限制user1的访问,而实际效果并非如此, 因为uer1属于group1组,而group1组被授权。user1实际获得的权限是策略能够给予 的最大权限;
潜在的配置错误: 访问版本库repos1的 /trunk 目录,会参照缺省的[/trunk]小节设置, 这可能跟管理员本意不符。需要对repos1的/trunk重新定义权限以覆盖缺省的 [/trunk]小节的设置。
其中1和2的错误会造成Subversion服务中断故障!3和4的问题如果不经过测试很难发现! 在我们为客户实施Subversion技术支持服务过程中,发现了用户迫切需要容错性强的 授权管理工具,于是便有了开发图形化管理界面的打算。选择 Python 是因为 Python 语言的魅力以及 Python 开发过程的高效。
Copyright © 2006 WorldHello 开放文档之源 计划 |