`
sin90lzc
  • 浏览: 157349 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Subversion的权限控制

 
阅读更多

1,认证(Authentication)和授权(Authorization)

这两个术语经常一起出现。其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在Subversion里提供了“authz-db”文件,实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限,在Subversion 1.3之后,svnserve和Apache一样都可以使用“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”同目录的passwd和authz,其中的password-db指定了用户密码文件,authz-db是我们的授权文件,也就是我们本文主要介绍的文件。

注意:使用Apache作为服务器时,根本就不会参考“svnserve.conf”文件的内容,而是会参考Apache的配置。


3,基于svnserve的版本库文件布局

使用svnserve时,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件svnserve.conf指向同一个password-db和authz-db文件。下面是一个多版本库的目录:
D:\SVNROOT
├─project1
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
└─project2
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks

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

password-db = ..\..\passwd
authz-db = ..\..\authz

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

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

4,测试用户和组说明

版本库禁止任何匿名用户的访问,只对认证用户有效。

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

p1_admin1:project1的管理员,对project1有完全权限。
p1_d1:project1的开发者,对project1的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p1_t1:project1的测试者,对project1的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。

p2_admin1:project2的管理员,对project2有完全权限。
p2_d1:project2的开发者,对project2的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p2_t1:project2的测试者,对project2的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。


对应的组及组的用户:
p1_group_a:p1_admin1
p1_group_d:p1_d1
p1_group_t:p1_t1
p2_group_a:p2_admin1
p2_group_d:p2_d1
p2_group_t:p2_t1


5,修改D:\SVNROOT\passwd文件

前面已经说过了,用户和密码文件应该是在D:\SVNROOT\passwd,所以我们为每一位用户设置权限,文件内容如下:

[users]
p1_admin1 = p1_admin1
p1_d1 = p1_d1
p1_t1 = p1_t1
         
p2_admin1 = p2_admin1
p2_d1 = p2_d1
p2_t1 = p2_t1

为了便于验证,所有密码和用户名一致,如果你使用的是其他认证方式,这一步可能不同,但是用户名应该都是一样的。

6,配置授权,修改D:\SVNROOT\authz

[groups]
# 定义组信息

p1_group_a = p1_admin1
p1_group_d = p1_d1
p1_group_t = p1_t1

p2_group_a = p2_admin1
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_d和p1_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]
# 指定对版本库project1的/trunk/admin根目录的权限
@p2_group_a = rw
@p2_group_d =
@p2_group_t =


经过以上设置以后,你会发现一些有趣的事情。当使用用户“p1_d1”,检出project1的trunk时,目录是空的,好像admin目录根本不存在一样,当使用p1_d1用户浏览版本库时,能够看到admin目录,但是其中的内容却无法看到。

关于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8格式,在我的WINXP的UltraEdit里显示的文件格式为U8-DOS,具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。

再复杂的情况也不过如此,在实际的工作中要首先规划好权限,只赋给用户最小的权限,保证以最小的配置实现最复杂的权限控制。

分享到:
评论

相关推荐

    Subversion权限控制手册

    介绍版本控制仓库conf文件夹下的authz,passwd,svnserve.conf三个文件的功能作用及设置方式。

    apache配置SVN,Subversion权限控制,win2008 FTP配置权限访问

    详细的apache配置SVN Subversion win2008 FTP服务器配置及多用户权限访问的配置过程。本人都配置过。完全没问题

    Subversion实现精细的目录访问权限控制

    Subversion实现精细的目录访问权限控制

    SubVersion版本控制服务器端的目录级或库级别的访问权限配置

    服务器端安装 服务器端的访问权限简单配置(仅用户标识) 服务器端的访问权限设级配置(目录级或库级别) 使用windows TortoiseSVN客户端如何更改登录的用户标识

    用 Apache 和 Subversion 搭建安全的版本控制环境

    在 Apache 的支持下,用户可以通过 HTTP 协议访问版本库,管理员可以对用户访问 HTTP 的权限做出具体的设置,同时 Subversion 还 可以获得 SSL 传输加密,用户数据加密,以及目录级的访问控制等特性。

    SVN权限控制,svn

    SVN权限控制,作为一个配置管理员,需要管理用户的权限,本文主要介绍了使用Subversion的授权文件“authz-db”,

    Apache-Subversion-1.14.2

    访问控制:SVN 具有强大的访问控制机制,可以根据用户或用户组的权限设置不同的访问级别。您可以定义谁有权访问仓库中的哪些部分,并限制某些操作的执行。 高度可定制:SVN 提供了丰富的配置选项和可定制性,以适应...

    基于PHP基于Web的subversion用户管理系统的毕业设计(源代码+毕设文档),采用HTML、CSS和JavaScript

    该模块用于管理subversion版本控制系统中用户的权限。用户可以通过该模块完成对用户权限的管理,包括项目访问权限、文件访问权限等信息。 ## 技术实现 该系统采用PHP语言作为开发语言,并结合Web技术进行开发。...

    linux下Subversion快速配置指南

    本文介绍了在linux下快速配置Subversion并使用它做版本控制的一种方案。该文还包括一种权限管理策略、版本库备份和恢复的方案。

    VisaulSvn Server操作指南

    1. VisualSVN Server基本操作 2 1.1. 对象:VisualSVN Server (Local)基本操作 2 1.2. 状态区操作 7 ...1.7. 使用Subversion权限控制 15 2. svn备份还原办法 17 2.1. 导出备份文件 17 2.2. 还原备份文件 17

    基于Web的subversion用户管理系统

    在开源软件世界,并行版本系统(cvs)一直是版本控制长久以来的唯一选择,但是,和其它许多工具一样,cvs开始显露出衰老的迹象,而subversion,正是以cvs继任者的面目出现的新型版本控制系统。但是,它的用户管理机制...

    svn-精细权限控制手册

    详细的SVN权限配置文档. 介绍了如何利用 Subversion 自带的目录管理功能,来实现对项目目录的精细访问权限的控制。同时描述了在配置的过程中,需要注意的一些地方,如对中文的处理等

    PHP基于Web的subversion用户管理系统(源代码+论文).zip

    在开源软件世界,并行版本系统(cvs)一直是版本控制长久以来的唯一选择,但是,和其它许多工具一样,cvs开始显露出衰老的迹象,而subversion,正是以cvs继任者的面目出现的新型版本控制系统。但是,它的用户管理机制...

    PHP基于Web的subversion用户管理系统(源代码+论文)

    在开源软件世界,并行版本系统(cvs)一直是版本控制长久以来的唯一选择,但是,和其它许多工具一样,cvs开始显露出衰老的迹象,而subversion,正是以cvs继任者的面目出现的新型版本控制系统。但是,它的用户管理机制...

    SVN服务器端、客户端安装以及集成到eclipse的详细步骤 以及SVN权限控制详解

    SVN服务器端、客户端安装以及集成到eclipse的详细步骤 包括: 1,安装服务器端svn和客户端svn ...5,SVN的权限控制详细讲解 6,安装 ApacheSVN 服务器教程 7,摘要:Subversion版本控制使用中的常见问题及解决方法。

    Subversion的配置和使用说明(一)

    火龙果软件工程技术中心 因公司牵移版本控制工具至Subversion的需要编写了此文档,此系列文档是参照subversion相关资料编写的。服务器端配置说明服务器软件下载服务器的安装建立版本库(Repository)配置用户和权限...

    用Apache和Subversion搭建安全的版本控制环境

    作为新一代的开源版本控制工具,Subversion以其目录版本化、原子提交、版本化的元数据、更加有效的分支和标签等优良特性,正逐渐受到开源软件社区的重视,并有望取代CVS,成为开源软件开发中版本控制的首选系统。...

Global site tag (gtag.js) - Google Analytics