根据本文中的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
实际测试: 各个组成员只能访问自己的项目,无权限查看别人的项目 只有管理员才能查看所有项目工程