您的位置:首页 > 其它

如何进行SVN团队成员权限细化设置----各取所需,安全保密

2013-01-05 11:39 375 查看
由于公司内发生了泄密事件,领导一再强调要保证信息安全数据保密.我们这边最有保密价值的只有源码(注:虽然有违开源精神,不过现在的商业公司都是这样,大家懂的).一直以来源码都是用svn管理的,权限控制在上一任经理手里总是怪怪的不好用,有的地方权限不清,该有而没有.反正后来就对团队成员全开放,尽情读写.

如今保密问题再次被提起,还如此重视,重新设置svn权限在所难免.之前也有设置折腾过,最终表现总不如预期,还不如以前那位经理做的.最终经过近一个小时的折腾最终确定和明确了SVN权限控制到底是怎么回事.



1.权限是向下传递的. 当你为根目录设置读权限,那么其下的所有目录和文件都有读权限.
2.授予权是叠加的. 当你为读权限目录的子目录设置读写权限,之下的目录将有叠加的读写权限.
3.拒绝权是一票否决的. 当你为一个子目录设置了No access,其下全部都没有了权限,即使你给孙子目录读写也一样不可访问; 当成员同时属于GA组GB组,而两组又同时设置相反的权限,那么拒绝权限总是优先生效.
4.个人权限优先组权限. 成员A属于GA组,如果为目录同时设置GA无权限,A有权限,结果将是有权限. 反之如果同时设置GA有权限,A无权限,结果是无权限.
5.Everyone是一个包含所有Users账户的内置组. 除此之外并无特殊之处.
6.未设置等同于拒绝访问. 通常刚创建的Repository是未设置的.需要注意,传递得来的权限也属于已设置.

接下来我们以一个实际项目为例说明SVN权限的设置.设置的需求是:将项目相关成员4名进行访问控制,每人只能读写其负责的代码,最终输出目录为所有人共享.



↑首先工程根目录,由于3/6的拒绝原则,如果不设置,成员将无法从根目录开始检出项目(后果是要为下面的bin,bin9,extend,...分别检出.⊙﹏⊙).我们将成员组整体加入,只读权限.这样所有成员都可以检出该项目.也正因为如此,后面我们要为每个目录考虑要拒绝谁,否则读权限传递,全部内容都可以检走了.



↑bin目录作为所有人的工程输出目录,大家共享,这样每个人用自己编好的模块放到bin目录进行单独调试即可.



↑extend目录中只与2名成员有关,所以另两名成员拒绝.两名有关成员的权限在此不能一概而论,所以只能先设置只读.如此子目录如果不特别设置,则意味着两名成员皆可只读.我们为了也将这两名成员责任分开,接下来要分别为CloudBoardSigner,HotKeyMap1.7,OnlineResourceProxy,SerialNumCreator,...分别设置.根据实际分工,一人读写,另一人拒绝. 如果某个子目录还有细化分工,则像前面一样,先设为只读,然后到子目录细化.以此类推.这也是由1/2/3的原则决定的.最后/extend/UltraVNC的权限如下所示.↓



GMember当中有项目相关的所有成员,如果需要保留某成员默认的读权限,因为继承了GMember的设置,完全不需特别再设了.如下图,sdk目录作为头文件定义,由yu负责<读写>,cheng和此部分不相关<拒绝>,另两成员未设置,意为可使用但不可修改.↓



再有如下例,我们将成员组设为不可访问,用来表达严厉的权限控制.其他相关成员依次设置只读.参照原则4,这些成员是可以有正常的权限效果的.↓



只要明白原则4,根据实际的多数少数情况,灵活设定组权限,尽量减少对个人的特别设定(本案中只有4人,如果您的项目有80人,估计该疯了).

秉承开源精神,以上内容欢迎纠正,补充!

尊重原创,尊重知识产权,从我做起.@2013/01/05
本文无引用,为个人1小时钻研成果分享.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: