首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SVN权限配置

SVN权限配置

作为一个配置管理员,需要管理用户的权限,本文主要介绍了使用Subversion的授权文件“authz-db”,同时为了叙述的清晰,我首先澄清一些概念。

1.
认证(Authentication)和授权(Authorization
这两个术语经常一起出现。其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在Subversion里提供了“authz-db”文件,实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限。

2.
svnserve下的配置文件
因为本文是以svnserve为例的,所以先介绍一下版本库目录的结构:

D:/SVNROOT/PROJECT1
├─conf
├─dav
├─db

├─revprops


├─revs


└─transactions

├─hooks
└─locks
其中conf下面有三个文件:


authz


passwd


svnserve.conf

其中的“svnserve.conf”是这个版本库的配置文件,当使用svnserve时,这个配置文件决定了使用什么认证和授权文件:



password-db = passwd


authz-db = authz

上面的配置说明使用“svnserve.conf”同目录的passwdauthz,其中的password-db指定了用户密码文件,authz-db是我们的授权文件,也就是我们本文主要介绍的文件。

3.
基于svnserve的版本库文件布局
使用svnserve时,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件svnserve.conf指向同一个password-dbauthz-db文件。下面是一个多版本库的目录:

D:/SVNROOT
├─project1

├─conf


├─dav


├─db



├─revprops



├─revs



└─transactions


├─hooks


└─locks

└─project2

├─conf


├─dav


├─db



├─revprops



├─revs



└─transactions


├─hooks


└─locks



D:/SVNROOT下有两个目录project1project2,都已经创建了版本库,所以我们修改每个conf目录下的svnserve.conf,使之指向同一个password-dbauthz-db文件。

password-db = ../../passwd
authz-db = ../../authz
这样,D:/SVNROOT/passwdD:/SVNROOT/authz就控制了所有版本库的svnserve访问。另外在后面的操作中要关闭匿名访问,应该去掉“anon-access = none”前的“#”号,保证只有认证用户可以访问。

注意:还有一点需要注意,那就是svnserve“realm”的值,在上面的设置下,应该保证所有的版本库使用相同的realm值,这样,对版本库的密码缓存可以在多个版本库之间共享,更多细节见客户端凭证缓存。

4.
测试用户和组说明
版本库禁止任何匿名用户的访问,只对认证用户有效。

root:配置管理管理员,对版本库有完全的管理权限。

p1_a1project1的管理员,对project1有完全权限。

p1_d1project1的开发者,对project1trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。

p1_t1 project1的测试者,对project1trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。



p2_a1project2的管理员,对project2有完全权限。

p2_d1project2的开发者,对project2trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。

p2_t1 project2的测试者,对project2trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。



对应的组及组的用户:

p1_group_a:p1_a1
p1_group_d:p1_d1
p1_group_t:p1_t1
p2_group_a:p2_a1
p2_group_d:p2_d1
p2_group_t:p2_t1

返回列表