关于SVN的权限管理,如果不使用工具,非常麻烦且存在安全上的隐患。之前一直使用的是svnmanager,管理起来十分方便,界面不仅仅是简洁,甚至是有点简陋了。虽然使用方便,但是对于Group的管理,需要使用ctrl+鼠标来添加和删除用户,不留神容易出错。所以最近安装了svn access manager,看起来高大上很多,不知道是否可以替代svnmanager成为更有效的权限管理工具。
1. 安装上的比较
两者安装上的区别不大,都需要先安装APACHE,MySQL,PHP和SVN。算是我遇到过的安装较为复杂的工具。详细请参看本博客中的安装文档。
2. 用户名和组的管理
用户和组的管理也类似,都是使用的Apache web server用户认证方式,需要在Apache的配置文件中加载安装mod_authz 模块。这个在源码安装SVN时会自动载入。
SVN Access Manager支持LDAP,这点比svnmanager更为强大。
另外,SVN Access Manager的界面更加复杂,功能也更为强大,比如说可以Lock User;可以赋予用户关于user,group 和 repository的管理权限;可以生成针对用户的访问权限报表等。这些都是svnmanager做不到的。
3.对Repository中的目录的权限控制
svnmanager不关心repository内部的结构,你可以对整个repository以及下面任何一级的目录做权限上的限制。
svn access manager 不能对整个repository 目录做访问控制,只能从repository 的二级目录开始做权限限制。因为SVN Access Manager认为Repository下的目录权限如下图所示:
因此只需要从项目级别,也就是repository的下一层目录进行权限控制。
这一点让我放弃了使用SVN Access Manager作为权限管理工具。因为公司目前基本上都是以一个项目做为Repository,Repository的下层目录就是trunk, branches 和 tags。我在SVN Access Manager中需要对它们逐一赋予权限,实在是有点麻烦。
4. 对于已经存在的Repository的处理
对于svnmanager,如果定义好的存放repository的目录中有已经创建好的repository,直接import进来就好。实际上任何一个目录都会被视作repository,出现在import的列表中。
而对于svn access manager,只能够创建,不能够import 已经存在的repository.
5.对于repository的备份和迁移
svnmanager 提供了针对Repository的dump, load和recover操作,可以很方便的对repository进行备份和迁移。
SVN Access Manager 没有这些功能。
总体看来,svnmanager虽然界面简陋,但是功能完整,操作也很方便。 svn access manager 虽然更加完善,但是因为缺省制定了repository的架构,只适合合乎其规范的项目使用。