您的位置:首页 > 运维架构 > Apache

Cent OS上配置Apache2 + SVN(续)实现对目录访问的精确控制

2010-07-09 17:40 309 查看
在上一篇文章中,完成了Apache和SVN的安装配置,并且实现了简单的用户控制,也就是所有用户都可以访问svn目录下的所有Repository。这种权限控制的方法比较简单,应该可以满足大部分情况下的需求。但是有些情况还是需要对某些目录进行比较精确的访问控制,Apache httpd的mod_authz_svn模块可以帮助实现。
mod_authz_svn应该会在安装SVN是自动安装。可以打开/etc/httpd/conf.d/subversion.conf(也可能是httpd.conf)查看,里面应该可以看到:
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

要想使用这个模块,需要在subversion.conf添加AuthzS***NAccessFile指令:
<Location /svn>
        D*** svn
        SVNParentPath /var/www/svn
        AuthzSVNAccessFile /etc/svn-access-file
        Require valid-user
        AuthType Basic
        AuthName "Subversion repository"
        AuthUserFile /etc/svn-auth-file
</Location>

其中/etc/svn-access-file用来指定详细的访问规则。加入现在svn下面两个repository:test1, test2,现在五个用户(在/etc/svn-auth-file):harry, sally, jack, david, alex。下面是配置文件svn-access-file的内容:
# 以#引导的是注释
# 大家对所有目录都有读权限(r),
[/]
* = r
# 只有harry和sally可以写test1,中括号中的内容表示进行访问控制的respository
[test1:/]
harry = rw
sally = rw
# 而jack只可以写test1中的project/test/目录中的内容
[test1:/project/test/]
jack = rw
# jack, alex, david是一个组可以访问test2
[test2:/]
@group1 = rw
# 建立组
[groups]
group1 = jack,alex,david


从上面可以看出这个访问控制可以精确某一个目录。
完成配置后,重新启动httpd服务,可以通过浏览器检测效果。

补记:只有在Repository的顶层目录对所有用户设置了读权限(* = r)之后,才能对Repository的下面子目录限定某些用户的写权限(sally = rw)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: