svn 子目录 配置权限_SVN服务器之用户权限配置——authz文件

本文详细介绍了如何在SVN服务器上配置authz文件,以实现对用户和用户组的权限管理。通过示例展示了如何限制用户对特定子目录的访问权限,包括读写和只读权限的设定,以及权限的继承特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要是分析SVN服务器中用户权限的配置,作为SVN服务器基本配置的提高篇。如果读者还未了解SVN服务器的基本配置,可以参见本人的另外一篇博文《使用自己的Linux

svnserve服务器》,链接:,本文中下面简称《基础篇》。

本文欢迎自由转载,但请标明出处和本文链接,并保持本文的完整性。

CU:

Godbach

Oct 26,

2009

在实际的项目开发中,有新的成员加入进来。这就需要在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)权限分配,只可以分配到某个目录,而不能到某个文件

参考资料:

1《svn权限配置文件(authz)分析》http://blog.youkuaiyun.com/saiya_kwok/archive/2009/02/20/3914294.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值