Board logo

标题: SVN权限配置 [打印本页]

作者: look_w    时间: 2017-11-18 14:11     标题: 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






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0