根据本文中的CentOS 6.4下的SVN服务器构建 一文,搭建好SVN服务器只能管理一个工程,如何做到不同的项目,多个成员的权限管理分配呢?
一 需求
  开发服务器搭建好SVN服务器,不可能只管理一个工程项目,如何做到不在一个项目中的开发人员不能访问其它项目中的代码,做好技术保密工作。
  代码仓库有三个仓库:project1,project2,project3
  假设人员有6个人:eg1,eg2,eg3,eg4,eg5,eg6
  eg1,eg2,只能访问project1;
  eg3,eg4,只能访问project2;
  eg5,eg6,只能访问project3;
二 实现
在你的仓库路径下:假如是/home/sv
cd /home/svn 
//创建三个代码仓库 
svnadmin create project1 
svnadmin create project2 
svnadmin create project3 
//把两个权限配置文件复制到SVN 
//根路径下,统一管理所有代码仓库 
cd/projcet1/conf 
cp authz passwd /home/svn 
//打开配置文件 
vi svnserve.conf
修改成如下:
anon-access = none               //禁止匿名访问 
auth-access = write 
password-db = /home/svn/passwd   //统一使用密码文件 
authz-db = /home/svn/authz 
realm =   project1               //权限域名,很重要,写你的工程名
分别修改project2的svnserve.conf
和上面一样,最后一行分别写 
anon-access = none               //禁止匿名访问 
auth-access = write 
password-db = /home/svn/passwd   //统一使用密码文件 
authz-db = /home/svn/authz 
realm =   project2              //权限域名,很重要,写你的工程名
分别修改project3的svnserve.conf
 和上面一样,最后一行分别写 
anon-access = none               //禁止匿名访问 
auth-access = write 
password-db = /home/svn/passwd   //统一使用密码文件 
authz-db = /home/svn/authz 
realm =   project3              //权限域名,很重要,写你的工程名
修改两个权限管理文件:
passwd
 //用户名 = 密码 
[users] 
eg1 = 123
eg2 = 123
eg3 = 123
eg4 = 123
eg5 = 123
eg6 = 123
authz
[groups]                  //分组 
admin = eg1,eg2 
guest = eg3,eg4 
guset1 = eg5,eg6 
[/]                      //管理者拥有所有读写权限 
* = 
@admin = rw 
[project1:/]                 //工程1的访问控制,guest1,2无法访问 
@admin = rw 
或 
eg1 = rw 
eg2 = rw 
[project2:/]            
@guest = rw 
或 
eg3 = rw 
eg4 = rw 
[project3:/] 
@guest1 = rw 
或 
eg5 = rw 
eg6 = rw
三 重启 
svnserve -d -r /home/svn
停止命令
killall svnserve
实际测试:
  各个组成员只能访问自己的项目,无权限查看别人的项目
  只有管理员才能查看所有项目工程
推荐阅读:
Windows下SVN服务器搭建和使用 + 客户端重新设置密码
Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN数据
