Subversion权限控制说明

2014-12-30 16:38:13    王怡栋    12700

许多第一次设置Subversion的管理员会在未经太多的思考的情况下轻易选择使用路径为基础的访问控制,管理员通常知道团队的成员工作在哪个项目,所以很容易确定赋予哪些团队访问哪些目录,不能访问哪些目录。这看起来是很自然的事情,它满足了管理员紧密控制版本库访问的愿望。

当你的服务器知道去查找规则文件时,就是需要定义规则的时候了。

访问文件的语法与 svnserve.conf和运行中配置文件非常相似,以(#)开头的行会被忽略,在它的简单形式里,每一小节命名一个版本库和一个里面的路径,认证用户名是在每个小节中的选项名,每个选项的值描述了用户访问版本库的级别:r(只读)或者rw(读写),如果用户没有提到,访问是不允许的。

具体一点:这个小节的名称是[repos-name:path]或者[path]的形式,如果你使用SVNParentPath指示,指定版本库的名字是很重要的,如果你漏掉了他们,[/some/dir]部分就会与/some/dir的所有版本库匹配,如果你使用SVNPath指示,因此在你的小节中只是定义路径也很好—毕竟只有一个版本库。

[calc:/branches/calc/bug-142]
harry = rw
sally = r

在第一个例子里,用户harry对calc版本库中/branches/calc/bug-142具备完全的读写权利,但是用户sally只有读权利,任何其他用户禁止访问这个目录。

当然,访问控制是父目录传递给子目录的,这意味着我们可以为Sally指定一个子目录的不同访问策略:

[calc:/branches/calc/bug-142]
harry = rw
sally = r
# give sally write access only to the 'testing' subdir
[calc:/branches/calc/bug-142/testing]
sally = rw

现在Sally可以读取分支的testing子目录,但对其他部分还是只可以读,同时,Harry对整个分支还继续有完全的读写权限。

也可以通过继承规则明确的的拒绝某人的访问,只需要设置用户名参数为空:

[calc:/branches/calc/bug-142]
harry = rw
sally = r
[calc:/branches/calc/bug-142/secret]
harry =

在这个例子里,Harry对bug-142目录树有完全的读写权限,但是对其中的secret子目录没有任何访问权利。

需要记住的是最详细的的路径会被匹配,服务器首先找到匹配自己的目录,然后父目录,然后父目录的父目录,就这样继续下去,更具体的路径控制会覆盖所有继承下来的访问控制。

缺省情况下,没有人对版本库有任何访问,这意味着如果你已经从一个空文件开始,你会希望给所有用户对版本库根目录具备读权限,你可以使用星号(*)实现,用来代表“ 所有用户”:

[/]
* = r

这是一个普通的设置;注意在小节名中没有提到版本库名称,这让所有版本库对所有的用户可读。当所有用户对版本库有了读权利,你可以赋予特定用户对特定子目录的rw权限。

星号(*)参数需要在这里详细强调:这是匹配匿名用户的 唯一模式,如果你已经配置了你的Location区块允许匿名和认证用户的混合访问,所有用户作为Apache匿名用户开始访问, mod_authz_svn会在要访问路径的定义中查找*值;如果找不到,Apache就会要求真实的客户端认证。

访问文件也允许你定义一组的用户,很像Unix的/etc/group文件:

[groups]
calc-developers = harry, sally, joe
paint-developers = frank, sally, jane
everyone = harry, sally, joe, frank, sally, jane

组可以被赋予通用户一样的访问权限,使用“ at”(@)前缀来加以区别:

[calc:/projects/calc]
@calc-developers = rw
[paint:/projects/paint]
@paint-developers = rw
jane = r

组中也可以定义为包含其它的组:

[groups]
calc-developers = harry, sally, joe
paint-developers = frank, sally, jane
everyone = @calc-developers, @paint-developers
评论列表
深岚数字科技 2018-11-23 17:45:32
如何发起代码评审?
深岚数字科技 2018-11-22 16:07:04
如何配置commit时的日志要求,比如必须填写日志,必须按照特定格式填写日志
qikalfIW 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
Alex2334521 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
dmsoftnews 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
dmkinonews 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
dmkultnews 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
dmrocknews.ru 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
android-group 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
dmitryavtonew 2018-02-25 01:28:28
这是做什么的呢哥哥
石洋洋 2018-02-27 09:23:27
回复
Subversion 是一个版本控制工具,可以百度 谷歌搜索一下。
查看全部 条评论
上拉显示下一页
1/ 3