SVN权限控制

更新时间:2023-05-23 14:00:16 阅读: 评论:0

权限配置
作为一个配置管理员,需要管理用户的权限,本文主要介绍了使用Subversion的授权文件“authz-db”,同时为了叙述的清晰,我首先澄清一些概念。
1. 认证(Authentication)和授权(Authorization
这两个术语经常一起出现。其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在Subversion里提供了“authz-db”文件,实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限。
2. svnrve下的配置文件
因为本文是以svnrve为例的,所以先介绍一下版本库目录的结构:
D:\SVNROOT\PROJECT1
├─conf
├─dav
├─db
男熊│  ├─revprops
│  ├─revs
│  └─transactions
├─hooks
└─locks
其中conf下面有三个文件:
    authz
    passwd
    f
其中的“f”是这个版本库的配置文件,当使用svnrve时,这个配置文件决定了使用什么认证和授权文件:
    password-db = passwd
    authz-db = authz
上面的配置说明使用“f”同目录的passwdauthz,其中的password-db指定了用户密码文件,authz-db是我们的授权文件,也就是我们本文主要介绍的文件。
3. 基于svnrve的版本库文件布局
使用svnrve时,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件f指向同一个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目录下的f,使之指向同一个password-dbauthz-db文件。
password-db = ..\..\passwd
authz-db = ..\..\authz
这样,D:\SVNROOT\passwdD:\SVNROOT\authz就控制了所有版本库的svnrve访问。另外在后面的操作中要关闭匿名访问,应该去掉“anon-access = none”前的“#”号,保证只有认证用户可以访问。
注意:还有一点需要注意,那就是svnrve“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
5. 修改D:\SVNROOT\passwd文件
前面已经说过了,用户和密码文件应该是在D:\SVNROOT\passwd,所以我们为每一位用户设置权限,文件内容如下:
[urs]
p1_a1 = p1_a1
p1_d1 = p1_d1
p1_t1 = p1_t1
p2_a1 = p2_a1
p2_d1 = p2_d1
p2_t1 = p2_t1
为了便于验证,所有密码和用户名一致。
6. 配置授权,修改D:\SVNROOT\authz
[groups]
# 定义组信息
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
[/]
# 指定所有的版本库默认只读,root可读写
* = r
root = rw
[project1:/]种植方法
# 指定对版本库project1根目录的权限
员工离职流程@p1_group_a = rw
@p1_group_d = rw
@p1_group_t = r
[project1:/trunk/admin]
# 指定对版本库project1/trunk/admin根目录的权限,
元宵节汤圆什么时候吃
# p1_group_a读写,p1_group_dp1_group_t没有任何权限。
@p1_group_a = rw
@p1_group_d =
@p1_group_t =
[project2:/]
# 指定对版本库project2根目录的权限
@p2_group_a = rw
@p2_group_d = rw
@p2_group_t = r
[project2:/trunk/admin]
班组长# 指定对版本库project2/trunk/admin根目录的权限
# p2_group_a读写,p2_group_dp2_group_t没有任何权限。
@p2_group_a = rw
@p2_group_d =
@p2_group_t =
经过以上设置以后,你会发现当使用用户“p1_d1”,检出project1trunk时,目录是空的,好像admin目录根本不存在一样,当使用p1_d1用户浏览版本库时,能够看到admin目录,但是其中的内容却无法看到。
关于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8格式,在我的WINXPUltraEdit里显示的文件格式为U8-DOS,具体的做法是用UltraEdit打开authz文件,然后选择文件->转换->ASCIIUTF-8”,然后保存。宝宝洗澡水温
再复杂的情况也不过如此,在实际的工作中要首先规划好权限,只赋给用户最小的权限,保证以最小的配置实现最复杂的权限控制。

本文发布于:2023-05-23 14:00:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/925142.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:版本   用户   权限
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图