選擇自 digitking 的 Blog
在使用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>
用Apache的htpasswd生成用戶名和密碼,
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使用時,會提示認證,填寫用戶名和密碼即可。