SVN服务器多个项目的权限分组管理,svn服务器权限分组
SVN服务器多个项目的权限分组管理,svn服务器权限分组
1.创建两个代码仓库
cd /home/svn
svnadmin create project1
svnadmin create project2
2. 复制 authz passwd 两文件到SVN文件夹下
cp authz passwd /home/svn
3.修改project1 和project2 下svnserve.conf文件
vi svnserve.conf
修改成如下:
anon-access = none //禁止匿名访问
auth-access = write
password-db = /home/svn/passwd //统一使用密码文件
authz-db = /home/svn/authz
realm = project1 //权限域名,很重要,写你的工程名
4.修改两个权限管理文件
vi passwd
//用户名 = 密码
[users]
eg1 = 123
eg2 = 123
vi authz
[groups] //分组
admin = eg1,eg2
[project1:/] //工程1的访问控制,guest1,2无法访问
@admin = rw
或
eg1 = rw
eg2 = rw
[project2:/]
@admin = rw
5. 重启
svnserve -d -r /home/svn
停止命令
killall svnserve
有个办法可以实现,但安装配置比较麻烦。
要实现你的想法,关键在于要把每个SVN库的权限文件分开存放,而不能是在同一个权限文件中存放所有版本库的权限。这样才有可能把某个权限文件的控制权限只开放给某个SVN管理员。
按照这个思路,在搭建SVN服务器的时候,可以用SVN、Apache集成搭建,在apache的httpd.conf的svn那段location中,不用svnparentpath去指向各版本库的父目录,而是用svnpath指向某一个版本库,也就是说为每个版本库写一段location,在每段location中指定一个单独的权限文件,用户ID密码文件可以用统一的。然后通过操作系统的共享权限设置,为每一个权限文件指定对应的管理员,甚至更进一步,将这些权限文件也做成一个单独的SVN库,每个权限文件存放在一个单独文件夹下,设定好每个文件夹的读写权限,再设定一下这个库的post-commit钩子,对这些权限文件有commit操作时,就通过钩子自动在服务器端更新权限文件。
这个过程稍微复杂些,但绝对可以实现,如有不明白可以继续问我。
要看SVN服务器端的权限设置情况,如果服务器端设置为所有匿名用户均可以访问,那么不需要用户名和密码也可以下载,如果服务器端设置为限定某些人员可以访问,那么就必须有用户名和密码了
通常那些开源软件的开发者,会将SVN服务器设置为匿名用户可以下载,但只有开发人员可以上传;公司内部的SVN服务器通常会设置为限定某些人员可以下载,某些人员可以上传。很少有SVN服务器会设定为匿名用户可以下载,匿名用户也能上传,虽然技术上可以这么设置,但很少有人这么做,因为会大家乱传东西上去会导致内容混乱不堪。
希望采纳
评论暂时关闭