Subversion for Apache的权限控制

| | 评论 (0) | 引用通告 (0)

通过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

发表评论

关于这篇文章

本页包含由 HD 发表于 September 9, 2007 5:37 PM 的单篇文章.

Suberversion for FreeBSD安装Howto 是本Blog内的上一篇文章.

很棒的管理故事 是本Blog内的下一篇文章.

您可以在 主页 上查找最近发表的内容,也可以查看列出在 存档页 上的所有内容.

Powered by Movable Type 4.2-en