一 需求
一般来说,公司有多个项目,在搭建好SVN服务器之后,就需要使用SVN来实现不在一个项目中的开发人员不能访问其它项目中的代码。
假设:
有2个项目:test,need
角色 产品 开发人员 测试
need项目 产品 读写操作 开发人员/测试 读操作
test项目 开发人员 读写操作测试 读操作
二 实现
在仓库根路径下:假设是/home/base/svn
cd /home/base/svn
创建项目
mkdir -p test
mkdir -p need
// 创建三个代码仓库
svnadmin create test
svnadmin create need
// 把两个权限配置文件复制到 仓库根路径下,统一管理所有代码仓库
cd /home/base/svn/need/conf cp authz passwd /home/base/svn/conf
// 打开配置文件
vim svnserve.conf
修改成如下:
anon-access = none # 禁止匿名访问 auth-access = write password-db = /home/base/svn/conf/passwd # 统一使用密码文件 authz-db = /home/base/svn/conf/authz realm = /home/base/svn # 权限域名,很重要,写你的项目名
分别修改 need 的 svnserve.conf,和上面一样,最后一行分别写
anon-access = none # 禁止匿名访问 auth-access = write password-db = /home/base/svn/conf/passwd # 统一使用密码文件 authz-db = /home/base/svn/conf/authz realm = /home/base/svn # 权限域名,很重要,写你的项目名(填写启动的项目路径)
修改两个权限管理文件:
cd /home/base/svn/conf
vim passwd
// 用户名 = 密码
[users] product = 123456 test = 123456 develop = 123456
vim authz
[groups] # 分组
product= product test = test
admin = admin develop= develop
[/] # 管理者拥有所有读写权限 @admin = rw * = [need:/] # 项目1的访问控制,guest1,2无法访问 product = rw [test:/] test = rw product = r
三 重启
svnserve -d -r /home/base/svn
// 停止命令
killall svnserve
四 实际测试
- 各个组成员只能访问自己的项目,无权限查看别人的项目
- 只有管理员才能查看所有项目工程