SVN服务器详解之用户权限配置——authz文件

在实际的项目开发中,有新的成员加入进来。这就需要在SVN服务器上为其添加一个账户。但是,由于某些原因,又不希望该用户能能够读取服务器上的所有文件。这时,就需要为该账户设置一些权限,使之可以去SVN服务器上取下某些特征目录的文件,或者不能取出某些特征目录的文件。如何实现呢?

在本人《基础篇》中讲到了如何配置svnserve.conf和passwd两个文件,而没有讲解authz文件的配置。因为当时搭建的SVN服务器上的所有文件对所有用户可见。本文要讲的就是authz文件的配置管理。该文件就是实现了对SVN用户的分组管理和权限设置。

1. authz文件分析

下面先看一下authz文件的默认内容:

### This file is an example authorization file for svnserve.

### Its format is identical to that of mod_authz_svn authorization

### files.

### As shown below each section defines authorizations for the path and

### (optional) repository specified by the section name.

### The authorizations follow. An authorization line can refer to a

### single user, to a group of users defined in a special [groups]

### section, or to anyone using the '*' wildcard.  Each definition can

### grant read ('r') access, read-write ('rw') access, or no access

### ('').

[groups]

# harry_and_sally = harry,sally

# [/foo/bar]

# harry = rw

# * =

# [repository:/baz/fuz]

# @harry_and_sally = rw

# * = r        

    文件内容上半部分是注释,讲解authz的相关配置方法。大致内容就是该文件可以对普通一个用户、定义的一个用户组或所有的用户进行权限配置。其中用户组通过在[group]这一节定义。随后在设置用户权限的时候,定义在某用户组的用户则用“@用户组名”表示,所有用户通过'*'来表示。注意:该文件中出现的所有用户名都需要在passwd文件中定义过了。

用户的权限就分只读('r')、读写('rw')和禁止访问('')。

       这里要补充说明的是authz文件中对版本库路径的表示方法。用'[/]'来表示版本库的根目录,如果有子目录foo,设置该目录权限时用'[/foo]'即可,其他任何目录都以'/'为版本根目录进行表示。

2. 举例

       在举例之前,我们要先修改svnserve.conf文件。《基础篇》没有讲解authz的配置,svnserve.conf中并没有开启authz的验证功能,这部分内容如下:

### The authz-db option controls the location of the authorization

### rules for path-based access control.  Unless you specify a path

### starting with a /, the file's location is relative to the the

### directory containing this file.  If you don't specify an

### authz-db, no path-based access control is done.

### Uncomment the line below to use the default authorization file.

#authz-db = authz

       因此,这里需要先做关键的一步,开启authz的验证功能,即删除注释符'#'即可:

       authz-db = authz

这样,当有用户访问版本库的时候,就会触发到svnserve.conf配置文件中的这一行,进而会进到atuhz文件中就验证。

下面开始我们的举例分析。假设我们在passwd定义了如下用户:

[users]

harry = harrypasswd

sally = sallypasswd

john = johnpasswd
 

       版本库根目录下有3个子目录,分别为foo,secret1, secret2。对于harry和sally,我们只想让他们对foo有读写权限,对secret1有只读权限,对secret2没有读写权限,john有整个版本库的读写权限,则authz文件的配置如下:

[groups]

grp_limit = harry,sally

[/]

* = rw

[/secret1]

@grp_limit = r

[/secret2]

@grp_limit =

       简单说明一下配置。

       我们首先定义了一个特征用户组grp_limit用来表示harry和sally:

       [groups]

grp_limit = harry,sally

因为他们在整个版本库的权限都是一样的。

其次,我们定义所有用户对整个目录有读写权限:

[/]

* = rw

      

很显然,这样设置,保证了用户john所有目的读写权限,也保证了harry和sally对foo目录的读写权限。那么,下一步就是开始对harry和sally进行权限的限制。

设置他们对子目录secret1的只读权限:

[/secret1]

@grp_limit = r

设置他们对不可读取子目录secret2:

[/secret2]

@grp_limit =

可见,设置用户权限的时候,'='左侧代表用户名称,可以是实际用户名,也可以是定义的用户组名,但要用'@'作为前缀,或者是所有用户'*'。'='右侧代表设置的权限'r'、'rw'或者为空即代表用户对于该目录无任何权限。

3. 总结

(1)用户某个目录的权限是向子目录递归的。如果用户对于/foo目录有读写权限,则该用户对于foo目录下的所有子目录都有读写权限。

(2)权限分配,只可以分配到某个目录,而不能到某个文件

原文:http://blog.chinaunix.net/uid-10167808-id-25994.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值