SVN 怎么控制权限 某一个用户只能访问某个文件
从你的截图来看,用的是
http协议
,也就是说SVN
服务器端
已经和Apache集成了,那么你只要修改一下服务器端的权限
控制文件
就可以了,可以这么写权限文件:
[/]
=
user
=
r
user2
=
r
[svnregister:/]
=
user
=
r
user2
=
r
[svnregister:/trunk/test]
user2
=
[svnregister:/trunk/test2]
user
=
如果你的SVN服务器的httpdconf中对于SVN版本库存放地址的指向,用的是SVNParentPath而不是SVNPath,那么就直接用上面的写法就行了,如果用的是SVNPath,那么上面的写法还得
改改
。至于权限文件是哪个文件,你要看httpdconf中AuthzSVNAccessFile指向哪个文件。
你可以看看我的
百度文库
,有篇项目级SVN服务器的搭建指南,其中对
权限管理
的配置有详细描述。
可以实现。简单思路是将权限文件分拆成多个,将这些权限文件作为一个SVN库管理,将每个权限文件的修改权限分配给对应的管理员,并在SVN服务器上checkout一个权限文件库的副本出来,Apache的权限定义引用这个副本中的权限文件。
具体实现方法:
1、建立一个新的SVN库(例如SVN库名为accessfile),专门用于存放权限文件,并建立多个文件夹,每个文件夹下面放一个权限文件。
2、在SVN服务器端存放accessfile库的hooks文件夹下,创建或修改post-commit钩子(这个钩子是在这个SVN库每次commit成功后,由SVN自动调用执行的),钩子内容是将accessfile库update到服务器主机上某个固定的文件夹(例如文件夹名为d:\access)中。
3、将原有的权限文件分拆成多个,分别存放在d:\access文件夹下的子文件夹内,并修改Apahce的httpdconf,使每个库的权限文件分别指向d:\access下的各权限文件。
4、给accessfile库分配权限,将每个权限文件的写权限分配给不同的管理员。
5、在accessfile库checkout到d:\access。
6、每个管理员从自己电脑上checkout出accessfile库,然后可自行修改权限了,每次修改完一commit,SVN服务器就会自动调用post-commit钩子,将权限文件update到d:\access文件夹,权限就立即生效了。
如果你的SVN服务器的用户ID和权限管理是基于操作系统用户的,那么可以通过设置不同操作系统用户对各文件夹的权限来限制
如果你的SVN服务器的用户ID和权限管理是基于Apache的,那么只能考虑从钩子程序下手了,研究一下pre-commit这个钩子吧,这个钩子是在正式提交操作之前服务器端自动执行的,你可以编写这个钩子,在commit时检查是否删除文件夹,如果是则返回错误信息。虽然我没验证过,但理论上应该可以解决
0条评论