首先创建一个版本库后,会生成最初的目录结构和基本的配置文件,本文主要分析“authz”文件的内容;我们先抛开alias和groups不谈,将重点放在路径的权限配置上。

  一. 权限格式

  svn权限的基本规则如下:

[/path]
user1=r
user2=rw
*=
[/path/path2]
user1=rw

  上面的代码配置了两条路径的权限,'[]'括起来的是路径名,权限的格式是'user=权限',权限的类别有空、r、rw,上面的*=意思是所有人没有权限。所以上面的配置是:路径/path上user1有读权限,user2有读写权限,其他所有人没有权限;路径/path/paths上user1有读写权限。

  二. 权限规则

  1.在路径上配置过权限的用户(r/rw),无论在其父目录上有无权限,都对该路径有权限,例如:

[/trunk]
user1=r
*=
[/trunk/app]
user2=rw
*=

  如上,user1对/trunk有读权限,user2对/trunk/app有读写权限,但是对/trunk没有权限,但是user2仍然可以操作/trunk/app下的内容。之前在TortoiseSVN上查看目录树的时候发现如果父目录没有权限的话是无法查看有权限的子目录的,导致误解为父目录没权限则子目录没权限,后来通过checkout和commit等证实用户对该路径是有权限的。

  2.在配置文件中,对同一条路径多次配置,会合并所有配置内容,如果有对相同用户的权限配置,则最后的配置生效,例如:

[/trunk]
user1=rw
user2=rw
*=
[/trunk]
user1=r

  上面代码对路径/trunk配置了两次,最终效果等同于:

[/trunk]
user1=r
user2=rw
*=

  3.如果某路径的配置中包含*=r,那么所有用户的权限最低是r(即使有配置过用户权限为空,如:user=),如果有配置*=rw,则所有用户的权限为rw,例如:

[/trunk]
user1=
user2=r
user3=rw
*=r

效果等价于

[/trunk]
user1=r
user2=r
user3=rw
*=r

效果等价于

[/trunk]
user3=rw
*=r

  如果配置*=r,则权限是rw的用户不受影响

  总结第1和第3,‘*=’所配置的权限会覆盖本条路径中比它低级的权限配置(即*=r会覆盖用户的空权限配置,*=rw会覆盖r权限和空权限的配置),比它高级的权限则不受影响。

  4.如果一条路径的配置(不考虑多次配置)内容中没有*=(或者*=r,*=rw),则该路径会继承父目录的权限,例如:

[/trunk]
user1=r
*=
[/trunk/app]
user2=rw

  则路径/trunk/app最终的权限等同于:

[/trunk/app]
user1=r
user2=rw
*=

  5.如果一条路径和其父目录对一个用户有不同的权限配置,则访问路径自身的配置生效。其实这点和类的继承很像,子类会继承父类的属性,自己没有定义的属性就直接使用父类的,如果自己定义了,则会覆盖父类的属性。

http://www.cnblogs.com/dong93/p/4257277.html

SVN权限解析规则详解(转)的更多相关文章

  1. Windows下SVN权限配置过程详解

    本节讲解一下Windows下SVN权限配置说明,针对的是一个目录下多库的情况,下面是具体的介绍,希望通过本文的学习,你能够对SVN权限配置问题有更加深刻的认识. 1.本文档适用于对Subvesion的 ...

  2. Reface.NPI 方法名称解析规则详解

    在上次的文章中简单介绍了 Reface.NPI 中的功能. 本期,将对这方法名称解析规则进行详细的解释和说明, 以便开发者可以完整的使用 Reface.NPI 中的各种功能. 基本规则 方法名称以 I ...

  3. 53个Oracle语句优化规则详解(转)

    Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE ...

  4. 深入解析ThreadLocal 详解、实现原理、使用场景方法以及内存泄漏防范 多线程中篇(十七)

    简介 从名称看,ThreadLocal 也就是thread和local的组合,也就是一个thread有一个local的变量副本 ThreadLocal提供了线程的本地副本,也就是说每个线程将会拥有一个 ...

  5. MySQL权限授权认证详解

    MySQL权限授权认证详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL权限系统介绍1>.权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删除 ...

  6. Apache Rewrite 规则详解

    在开篇之前: 我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的.需要原文的可以在谷歌上搜索一下&qu ...

  7. css样式继承规则详解

    css样式继承规则详解 一.总结 一句话总结:继承而发生样式冲突时,最近祖先获胜(最近原则). 1.继承中哪些样式不会被继承? 多数边框类属性,比如象Padding(补白),Margin(边界),背景 ...

  8. iOS开发——开发实战篇&版本控制SVN和Git使用详解

     版本控制SVN和Git使用详解     公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的!     -----------------svn--------- ...

  9. Nginx 常用全局变量 及Rewrite规则详解

    每次都很容易忘记Nginx的变量,下面列出来了一些常用 $remote_addr //获取客户端ip $binary_remote_addr //客户端ip(二进制) $remote_port //客 ...

随机推荐

  1. Git学习笔记总结和注意事项

    一.Git简单介绍 Git是眼下世界上最先进的分布式版本号控制系统.其特点简单来说就是:高端大气上档次! 二.Windows上Git安装 最早Git是在Linux上开发的.非常长一段时间内.Git也仅 ...

  2. Java网络编程:利用apache的HttpClient包进行http操作

    本文介绍如何利用apache的HttpClient包进行http操作,包括get操作和post操作. 一.下面的代码是对HttpClient包的封装,以便于更好的编写应用代码. import java ...

  3. DNS与网站优化

    点就出现了这样的问题,导致了几小时的访问失败,所以选择优秀的DNS服务器势必关系网站发展的生死存亡.本文做以下分析.     选择良好的DNS服务器要从选择域名注册商说起,在注册域名时多数人看中的仅仅 ...

  4. 基于visual Studio2013解决C语言竞赛题之0701排队输出

     题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void swap(int *a,int *b) { *a = *a ...

  5. spoj 1812 lcsII (后缀自动机)

    spoj 1812 lcsII (后缀自动机) 题意:求多个串的lcs,最多10个串,每个串最长10w 解题思路:后缀自动机.先建好第一个串的sam,然后后面的串拿上去跑(这个过程同前一题).sam上 ...

  6. 为经典版eclipse增加web and JavaEE插件

    链接地址:http://jingyan.baidu.com/article/f25ef2546cd0e2482d1b825d.html 为经典版eclipse增加web and JavaEE插件 百度 ...

  7. Mybatis 示例之 复杂(complex)属性(property)

    Mybatis示例专栏:http://blog.csdn.net/column/details/mybatis-sample.html Mybatis的复杂属性,Mybatis的这个特点很少被提及,但 ...

  8. perl encode_json 会产生 UTF-8 (binary) string decode_json 需要一个 UTF-8 (binary) string

    encode_json $json_text = encode_json $perl_scalar Converts the given Perl data structure to a UTF-8 ...

  9. 基于Tire树和最大概率法的中文分词功能的Java实现

    对于分词系统的实现来说,主要应集中在两方面的考虑上:一是对语料库的组织,二是分词策略的制订. 1.   Tire树 Tire树,即字典树,是通过字串的公共前缀来对字串进行统计.排序及存储的一种树形结构 ...

  10. Android 计时与倒计时

    方法一 Timer与TimerTask(Java实现) [java]  view plain copy print ?   public class timerTask extends Activit ...