本篇将讲解如何在Linux服务器上配置SVN仓库的目录权限、人员分组,全部配置都是通过命令在服务端完成。
如果你是使用 SVNBucket 则可以通过图形操作界面来完成所有操作。

首先确保你在服务器上已经存在一个SVN的仓库了,我们定位到仓库的/conf目录,这里就是存放配置的地方,这个目录下的几个配置文件介绍如下:
authz 是权限配置文件,哪个目录有读写权限,设置什么分组,都是在这里配置
hooks-env.tmpl 是钩子环境变量配置文件的模版,我们暂时用不到,可以忽略
passwd 用来配置用户的帐号密码
svnserve.conf 是subversion的总配置,如果你需要登陆并且授权的用户才可以访问,则需要像我样配置这个文件:

1
2
3
4
5
6
7
8
9
[general]
# 是否允许未登录的用户访问,none表示不允许
anon-access = none
# 登陆后的权限,可写
auth-access = write
# 密码配置文件名
password-db = passwd
# 权限配置文件名
authz-db = authz

我们着重来看下authz文件如何给每个用户配置不同目录的读写权限,一个经典的配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 分组配置
[groups]
admin = zhangsan
developer = lisi,wangwu

# 根目录的权限
[/]
zhaokai = rw
* =

# 开发人员这个分组分配了/src目录权限
[/src]
@developer = rw
* =

这个配置文件分两类配置,一类是分配配置,第二类是路径权限配置。
[groups] 表示后面配置的是分组,我们可以把一些权限相同的用户都归为一个组,比如管理员admin,开发人员developer。多个成员要用英文逗号分隔开。
除了分组,其他的以中括号括起来的都表示这个仓库中的一个目录,甚至是可以一个文件名,因为SVN是可以支持文件级的权限配置的。
上面的配置,我们给zhaokai分配了根目录/的读写权限rw,除了rw,还有只读r,无权限(空)。
* = 是一个特殊的配置,表示除了上面配置的人,其他人都没有权限,这行配置需要放在每个路径配置的最后。
/src目录我们给开发组的所有成员配置了读写权限,注意这里配置的是一个分组,需要以@符号开头,这个分组你必须先在上面配置过,否则会报错找不到分组。

好了,权限配置文件就是这么的简单,但是如果你管理的项目比较多,人员多,经常这样修改配置文件是非常危险的,可能稍微不留神就配置错了,从而导致整个仓库无法访问。如果你经常需要管理SVN项目,建议你使用SVNBucket 它提供了可视化的配置界面,不需要到服务器上手动配置这些,方便并且安全。