SVN权限解析规则详解(转)

简介: 首先创建一个版本库后,会生成最初的目录结构和基本的配置文件,本文主要分析“authz”文件的内容;我们先抛开alias和groups不谈,将重点放在路径的权限配置上。   一. 权限格式   svn权限的基本规则如下: [/path] user1=r user2=rw *= [/path/path2] user1=rw   上面的代码配置了两条路径的权限,'[]'括起来的是路径名,权限的格式是'user=权限',权限的类别有空、r、rw,上面的*=意思是所有人没有权限。

 

首先创建一个版本库后,会生成最初的目录结构和基本的配置文件,本文主要分析“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

 

相关文章
|
19天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
40 0
|
19天前
|
Python
区域代理分红商城系统开发源码片段示例规则解析
level = Column(Integer, default=1) # 代理等级,例如:1代表普通用户,2代表初级代理,3代表高级代理等 parent_id = Column(Integer, ForeignKey('user.id')) # 上级代理ID 【更全面的开发源码搭建可V or TG我昵称】 parent = relationship("User", remote_side=[id]) # 上级代理对象
|
19天前
|
Python
潮玩元宇宙游戏开发基础示例规则解析
# 潮玩角色类 class ToyCharacter: def __init__(self, x, y): self.x = x self.y = y self.image = pygame.Surface([50, 50]) self.image.fill(RED) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.change
|
19天前
Turndown 源码解析:二、规则
Turndown 源码解析:二、规则
39 0
|
19天前
|
测试技术 编译器 vr&ar
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(一)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
124 1
|
19天前
|
存储 Linux C++
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(二)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
73 0
|
19天前
|
资源调度 算法 Linux
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
311 0
|
19天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
19天前
|
安全 Linux 数据安全/隐私保护
Linux特殊权限解析:SUID、SGID和Sticky Bit
Linux特殊权限解析:SUID、SGID和Sticky Bit
67 0

推荐镜像

更多