posts - 262,  comments - 221,  trackbacks - 0

【一、测试环境】


 A.SVN Repository:C:\peng\Other\newRepo
 B.SVN 用户:admin/admin

【二、测试案例1:不同的服务根目录对访问修改URL的影响】

 A.测试1:
    ①运行svnserve -d -r C:\peng\Other\newRepo //指定Repository根目录为服务的根目录
    ②运行svn://localhost,可以正常访问修改Repository
    ③运行svn://localhost/newRepo,出现:'svn://localhost/newRepo' non-existent in
 
 B.测试2:
    ①运行svnserve -d -r C:\peng\Other //指定Repository上层目录为服务的根目录
    ②运行svn://localhost/newRepo,可以正常访问修改Repository
    ③运行svn://localhost,出现:Error * No repository found in 'svn://localhost'
 
 

 C.结论:
    ①SVN服务启动时指定的根目录不同,会影响相同URL的访问结果
    ②SVN在访问指定路径时会从服务的根目录下去寻找,即基于我们启动服务时指定的根目录
    ③svn://localhost指向默认的Repository,svn://localhost/newRepo指向newRepo
    ④测试情况一的步骤③失败是因为我们已经把路径直接指向了Repository的根目录
    ⑤测试情况二的步骤③失败是因为我们只是把路径指向了Repository的上层目录
    
   
【三、测试案例2:不同用户组下的用户对不同目录的访问修改控制】


 A.权限配置
   [groups]
   #创建基本用户组
   group-admin = admin
   group-module1 = paul
   group-module2 = guang
   group-module3 = ben
 

   #把group-module1~3的用户和ben添加到组group-c
   group-c = @group-module1, @group-module2, @group-module3,qing
   group-java = yu

   #把group-c和group-java组的人也添加到group-all
   group-all= @group-c,@group-java,qiang
 
   #只有group-admin组的人对/目录可读可写,其它组的用户无权访问修改根目录
   [/]
   @group-admin = rw
 
   [/trunk]
   @group-admin = rw
 
   #所有用户都可以访问修改/trunk/root目录
   [/trunk/root]
   @group-admin = rw
 
   #只有group-module1~3的用户和group-admin可以访问修改/trunk/root/folder1目录
   #其中group-module1~3的权限明确被赋予,group-admin的权限是继承而来
   #而group-all = 则表示除了上面授权的用户,其他用户无权读写
   [/trunk/root/folder1]
   @group-module1 = rw
   @group-module2 = rw
   @group-module3 = rw
   @group-all =
 
   #只有group-c的用户可以读写
   [/trunk/root/folder2]
   @group-c = rw
   @group-all =
 
   #只有group-java的用户可以读写
   [/trunk/root/folder3]
   @group-java = rw
   @group-all =

   [/trunk/root/folder4]
   @group-c = r
   @group-java = rw
   qiang = r

   [/trunk/root/folder4/folder4_1]
   @group-c = rw   #权限扩大
   @group-java = r #权限收缩
   qiang = rw         #权限扩大

   [/trunk/root/folder4/file4.txt]
   @group-c = rw
   @group-java = r
   qiang = rw
   paul = rw           #直接赋予RW权限


   附:SVN结构图
   svn://localhost
    |--trunk
        |--root
             |--folder1
                   |--file1.txt
             |--folder2
                   |--file2.txt
             |--folder3
                   |--file3.txt
             |--folder4
                   |--file4.txt
                   |--folder4_1

 B.以admin身份访问修改:(属于组group-admin, group-all)
    ①访问修改svn://localhost/:rw
    ②访问修改svn://localhost/trunk:rw
    ③访问修改svn://localhost/trunk/root:rw
    ④访问修改svn://localhost/trunk/root/folder1:rw
    ⑤访问修改svn://localhost/trunk/root/folder2:rw
    ⑥访问修改svn://localhost/trunk/root/folder3:rw
    ⑦访问修改svn://localhost/trunk/root/folder4:rw
    ⑧访问修改svn://localhost/trunk/root/folder4_1:rw
    ⑨访问修改svn://localhost/trunk/root/folder4/file4.txt:rw

    【结论】group-admin组用户对任何目录、文件都可读可写。不管子目录权限如何收缩

 C.以paul身份访问修改:(属于组group-module1, group-c, group-all)
    ①访问修改svn://localhost/:rw fail
    ②访问修改svn://localhost/trunk:rw fail
    ③访问修改svn://localhost/trunk/root:rw fail
    ④访问修改svn://localhost/trunk/root/folder1:rw
    ⑤访问修改svn://localhost/trunk/root/folder2:rw
    ⑥访问修改svn://localhost/trunk/root/folder3:rw fail
    ⑦访问修改svn://localhost/trunk/root/folder4:fail to w
    ⑧访问修改svn://localhost/trunk/root/folder4_1:rw
    ⑨访问修改svn://localhost/trunk/root/folder4/file4.txt:fail to w

    【结论】用户Paul对于权限放大的目录folder4_1可读可写,但对于权限放大的文件file4.txt只可读不可写

 D.以qing身份访问修改:(属于组group-c, group-all)
    ①访问修改svn://localhost/:rw fail
    ②访问修改svn://localhost/trunk:rw fail
    ③访问修改svn://localhost/trunk/root:rw fail
    ④访问修改svn://localhost/trunk/root/folder1:rw fail
    ⑤访问修改svn://localhost/trunk/root/folder2:rw
    ⑥访问修改svn://localhost/trunk/root/folder3:rw fail
    ⑦访问修改svn://localhost/trunk/root/folder4:fail to w
    ⑧访问修改svn://localhost/trunk/root/folder4_1:rw
    ⑨访问修改svn://localhost/trunk/root/folder4/file4.txt:fail to w

    【结论】用户qing对于权限放大的目录folder4_1可读可写,但对于权限放大的文件file4.txt只可读不可写

 E.以yu身份访问修改:(属于组group-java, group-all)
    ①访问修改svn://localhost/:rw fail
    ②访问修改svn://localhost/trunk:rw fail
    ③访问修改svn://localhost/trunk/root:rw fail
    ④访问修改svn://localhost/trunk/root/folder1:rw fail
    ⑤访问修改svn://localhost/trunk/root/folder2:rw fail
    ⑥访问修改svn://localhost/trunk/root/folder3:rw
    ⑦访问修改svn://localhost/trunk/root/folder4:rw【备注:不包括folder4_1和文件file4.txt】
    ⑧访问修改svn://localhost/trunk/root/folder4_1:fail to w
    ⑨访问修改svn://localhost/trunk/root/folder4/file4.txt:fail to w

    【结论】用户yu对于权限放大的目录folder4可读写,但不包括那些权限已经被收缩的子目录和文件,对于没有定义的权限则直接继承上层的定义

 F.以qiang身份访问修改:(属于组group-all)
    ①访问修改svn://localhost/:rw fail
    ②访问修改svn://localhost/trunk:rw fail
    ③访问修改svn://localhost/trunk/root:rw fail
    ④访问修改svn://localhost/trunk/root/folder1:rw fail
    ⑤访问修改svn://localhost/trunk/root/folder2:rw fail
    ⑥访问修改svn://localhost/trunk/root/folder3:rw fail
    ⑦访问修改svn://localhost/trunk/root/folder4:fail to w
    ⑧访问修改svn://localhost/trunk/root/folder4_1:rw
    ⑨访问修改svn://localhost/trunk/root/folder4/file4.txt:fail to w

    【结论】用户qiang对于权限放大的目录folder4_1可读写,但对于权限放大的文件file4.txt只可读不可写(即文件的权限放大不起作用,收目录权限控制)


【四、综合结论】


   ①权限可以继承,如果对某个目录或文件没有具体定义权限,则默认继承其对父目录的权限

    ②目录权限可以收缩,父目录的权限为RW,子目录收缩为R后,用户可以对除该目录外的任何其
        它可读写目录具有读写权限

    ③目录权限可以放大,父目录的权限为R,子目录放大为RW后,用户仅可以对该子目录下
        (不包括子目录本身)的目录,文件有读写权限。

    ④文件权限可以直接收缩,父目录的权限为RW,其下文件收缩为R后,用户对该文件的权限仅为
       可读

    ⑤文件权限不能直接放大,父目录的权限为R,其下文件放大为RW后,用户对该文件依然仅有R
       权限,没有W权限

 



-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2008-12-18 14:13 Paul Lin 阅读(1838) 评论(1)  编辑  收藏 所属分类: 其它技术


FeedBack:
# re: 【实验】SVN权限模型配置实验一例
2009-02-15 18:25 | 魔方网
写的不错啊,辛苦了!
http://www.mofun.cc  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜