http://hi.baidu.com/javava/blog/item/32b2faf86ab5710dd8f9fd96.html
在使用Subversion时,认证文件AuthzSVNAccessFile能控制每一个目录的权限,但讲解的文档较少,中文文档更少。下面通过实例讲解使用方法。 环境Windows 2003 Server,局域网,域:domain.com.cn Apache 2.0.52 Subversion 1.1.0 TortoiseSVN 1.1.0 LanguagePack_1.1.0_zh_CN
例子: Repository存放在D:/repository下,有两个repository: test and xtest 每个repostory 的结构相同: 根:01.txt 02.txt folder 1-: 11.txt 12.txt folder 2-: 21.txt 22.txt 对目录1和2作不同的读写权限控制 Basic Authentication 修改文件: Httpd.conf: #Basic authentication <Location /repository> DAV svn SVNParentPath d:/repository AuthzSVNAccessFile d:/repository/accessfile Require valid-user AuthType Basic AuthName "身份验证" AuthUserFile d:/repository/passwd </Location>
Htpasswd –c passwd username 第二次不用 –c。 生成的用户名和密码在passwd中: 0:$apr1$Vu5.....$XZ/csz/2YKoPNKpb88O5p0 1:$apr1$vu5.....$I1VwMJ7JtRmpmJjVUlT4h1 2:$apr1$Dv5.....$vf2MTg/p0mY.WcFhx7wET1 3:$apr1$Tv5.....$gfk4AiP49h0JjKN8BuJdB.
AuthzSVNAccessFile控制每个目录的读写权限 [test:/] 1 = r 2 = r 3 = r [test:/1] 1 = rw [test:/2] 2 = rw
在客户端,用http://server/repository/test可以访问。也可以直接进入子目录访问:http://server/repository/test/1,http://server/repository/test/2。系统会要求进行认证。例如用户1对目录1有读写权限,可以commit修改,但对目录2所作的修改就不能commit。
SSPI认证。 按上一种方式,用户更换一次密码,就必须修改一次密码文件。用SSPI认证则可以没有这个问题。 Httpd.conf文件: #SSPI authentication <Location /repository> DAV svn SVNParentPath d:/repository AuthzSVNAccessFile d:/repository/accessfilesspi Require valid-user AuthType SSPI AuthName "Subversion repositories" # SSPI settings SSPIAuth On SSPIAuthoritative On # point to domaincontroller SSPIDomain domain.com.cn SSPIOfferBasic On </Location> 控制文件AuthzSVNAccessFile要作相应的修改: [test:/] domain/user1 = r domain/administrator = r [test:/1] domain/user1 = rw [test:/2] domain/user1 = domain/administrator = rw 在tortoiseSVN使用时,会提示认证,填写用户名和密码即可。 |