不相信最佳实践,只相信在一定条件下,一些实践比其他实践更有用

发布新日志

  • SVN权限分配学习记录

    2011-03-19 22:57:40

    在以下权限配置文件中,内容如下:
     
    [groups]#分组
    #分组,组名可随便定义,相同权限的用户最好放在同一个组内
    group_user1 = liml
    group_user2 = zhaopy
    group_user3 = lium
    group_user4 = limenglei
    #对版本库SoftwareG_1的权限分布
    [SoftwareG_1:/]
    #该用户对该版本库根目录只有读权限,指定权限时,可以具体到一个用户
    liml = r
    #该用户对该版本库具有读写权限
    @group_user3 = rw
    #该用户对该版本库只有读权限,指定权限时,可以是组
    @group_user4 = r
    #对版本库中的某一个目录进行权限控制
    [SoftwareG_1:/CaptureVideo9]
    #虽然在根目录的权限分配中,已经分配该组用户具有“读写”权限,但是在具体的目录上,仍可以分配该组用户只有“读”权限                        
    @group_user3 = r
    #在根目录中已经分配该组用户只具有读权限,所以在具体到某个目录时,不需要再去分配该组的读权限了,因为权限具有继承。除非有必要分配其写权限时,所以这里用注释。
    #@group_user4 = r
    #对版本库中的某一个目录进行权限控制
    [SoftwareG_1:/Counter] 
    #未授权用户没有任何权限,所以即使是在根目录中具有读写权限的用户组,在该具体目录的权限分配上没有分配给它权限,它用访问不了这个目录
    * =
    #虽然在分配根目录权限时,该用户只有读权限,但是在具体到某一个目录时,仍然可以分配该用户具有读写权限                
    liml = rw
    #在根目录的权限分配中,没有该用户组的权限分配,所以即使在具体的某一个目录中分配该用户组的权限,该用户组仍能不能访问该版本库。
     
    总结:
    1.其实在对根目录进行权限分配时,只要将能访问的用户写上即可,可以不再添加“* = (未授权用户没有任何权限) ”这一行也可以了,因为你没分配,登录都不成功,就更没有读写权限的分配了,在权限分配时,没有指明的用户在访问版本库时,都返回403 Forbidden错误。
    2.在根目录中虽然定义一个组用户具有读写权限,但是再具体到某一个目录时,仍能分配该组用户只具备读权限。这样就能控制对大部分目录具有读写权限的某些用户对特定目录的写权限,因为权限是可以继承的,即在根目录中定义用户具有读写权限时,若在具体目录中没有分配该用户权限,则该用户对根目录下所有目录都具有读写权限。
    3.同样,在根目录中虽然分配了一个用户组具有读写权限,但是在具体到某一个目录的权限分配时,若没有明确分配该用户的权限,且在该目录的权限分配上添加了“* = ”这一行,则这一用户组不具备访问该目录的权限。行“* = ”可以取消权限的继承。
    4.在根目录中虽然定义一个用户只具备读权限,但是再具体到某一个目录时,仍能分配写权限。这样就能控制对大部分目录只具备读权限的用户,对特定目录仍具备写权限。权限的分配更灵活。
    5.如果是新手,在分配很可能会遇到权限分配错误,即不管用那个用户登录,都返回403 Forbidden错误,遇到这种情况可以分析以下原因:
    1)使用apache时,增加的用户的用户名和密码,与登录时使用的不同。即用户名和密码错误
    2)权限配置文件的编码问题,一般权限配置文件的文件名是authz,即这个文件的编码不能被SVN识别,需要转换文件的编码类型,解决办法可以用UltraEdit打开文件再保存即可。具体SVN为什么不识别编码类型,有心人可以自己百度。
    3)权限分配问题,即在分配组或用户权限时,权限分配错误,导致用户登录不了。解决办法是一个一个分析,即在根目录上只先分配一个用户或组的权限,在具体到某一个目录,然后再添加多个用户或组,用“排除”方式应可以解决。
     
  • 如何在浏览器中查看多个版本库

    2011-03-19 21:15:36

    在浏览器中查看多个版本库,这样当你使用浏览器访问父路径而不是具体某个版本库时 Apache 就会显示所有版本库列表,当然这种情况只适用于多库的情况。
     
    在apache文件夹中编辑httpd.conf文件
    原<Location /svn>内容如下:
    <Location /svn>
    DAV svn
    SVNParentPath "D:\SVN_Server"
    AuthType Basic
    AuthName "LiMengLei subversion repository"
    AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf\passwd"
    Require valid-user
    </Location>

    在以上内容中,新加入一行:SVNListParentPath on
    添加后的内容如下:
    <Location /svn>
    DAV svn
    SVNParentPath "D:\SVN_Server"
    SVNListParentPath on
    AuthType Basic
    AuthName "LiMengLei subversion repository"
    AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf\passwd"
    Require valid-user
    </Location>
     
    只需要在浏览器中输入:http://127.0.0.1/svn/即可访问多个库,查看每个库中的文件。
     
    注意:经本人尝试,貌似不能在版本库浏览器中查看多个库,研究中。。
Open Toolbar