Subversion for Apache的权限控制
通过apache使用svn,你可以做到整体的读/写访问,或者是每目录的读/写访问的权限控制。昨天只是装好了一个服务器,权限只是用户验证,今天来试试权限控制。
在Apache的httpd模块mod_authz_svn中提供了更加细致的设置访问权限。这个模块收集客户端传递过来的不同的晦涩的URL信息,询问mod_dav_svn来解码,然后根据在配置文件定义的访问政策来裁决请求。在安装Apache时,我使用了WITH_AUTH_MODULES=yes WITH_DAV_MODULES=yes这两个参数,哪么我们已经不必再为apache准备什么了,只是去照顾好配置文件就好。 :) 当然,如果你不放心,可以到/usr/local/etc/apache22/httpd.conf中看到以下module已经加载:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
为了使用这个模块,你需要配置你的Location区块的AuthzSVNAccessFile指示,指定保存路径中的版本库访问政策的文件。在你的/usr/local/etc/apache22/Includes/svn.conf中的Location区块里加入AuthzSVNAccessFile,整个svn.conf文件内容如下:
<Location /svn>
DAV svn
SVNParentPath /home/svnhome
AuthzSVNAccessFile /usr/local/etc/svn-access-file
AuthType Basic
AuthName "HDIBM Repository"
AuthUserFile /usr/local/etc/svn-auth-file
Require valid-user
SVNIndexXSLT "/svnindex.xsl"
</Location>
设置好后,来vi你的/usr/local/etc/svn-access-file文件罢。由于我们的最初意图就是要在一个目录中有多个snv库,所以每一个权限定义小结开头的[repos-name:path]形式中,repos-name必须要写,不然,path会在所有的svn库中起作用的。每个小节中都是 username = 权限,这样的形式写。权限只有两个:r和rw。以下是例子,我希望hd库中的hd和cc能rw,bz只能r,而另外一个库bz中,bz和hd能rw,gl只能r。哪么设置如下:
[hd:/]
hd = rw
cc = rw
bz = r
[bz:/]
bz = rw
hd = rw
gl = r
再来一个例子,hd和bz是一个组的同伙,这个组叫admin。cc和gl是另一个组的同伙,这个组叫hr。在小节中为了说明是组而不是用户,需要在username前加@。如下例:
[groups]
admin = hd, bz
hr = cc, gl
[hd:/]
@admin = rw
@hr = r
[bz:/]
@admin = rw
gl = r
真多的特性自儿玩罢。 :)
引用通告 (0)
下面所列出的是引用这篇文章: Subversion for Apache的权限控制 的Blog链接.
这篇文章的引用通告URL: http://mt.opensource.org.cn/cgi-bin/mt/mt-tb.cgi/4

发表评论