我的Svn的版本库路径为:E:/svn/repository 打开它下面的conf子目录,会看到三个文件,分别命名为:authz,passwd,svnserve.这三个文件就是用来对该版本库的权限进行管理的。
一.svnserve:
这个文件是对版本库权限进行管理的全局文件,其中有四行内容常用,分别是:
#anon-access = read //对未注册用户的权限进行设置
#auth-access = write //对注册用户的权限进行设置
#password-db = passwd //对用户进行注册
#authz-db = authz //对已经注册的用户的权限进行精细设置
去掉前面的#号,表示未注册用户只能对版本库只有查看权限,注册用户对版本库有读写权限,用户的注册信息放在passwd文件中,所有注册用户的精细访问权限在authz文件中进行设置。(但是要注意,去掉#号后,后面内容必须向前进一格,前面不允许有空格,否则会出错)。
二.passwd:
这个文件保存用户的注册信息,格式为name=password形式。但是只有在svnserve中去掉password-db=passwd前面的#号后才起作用。
在其中添加以下用户信息:
zhangsan=zhangsan123
lisi=lisi123
wangwu=wangwu123
zhuliu=zhuliu123
三.authz:
这个文件对注册用户的权限进行精细设置,只有去掉svnserve文件中的authz-db=authz前面的#号后才起作用。
此时,我的版本库中存有两个项目,分别是project1,project2
project1
|-----a1
|----- a1.txt
|-----b1
|----- b1.txt
project2
|-----a2
|----- a2.txt
|-----b2
|-----b2.txt
权限分配时,应遵循从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。提示:目录的访问权限既可以分配给组,也可以分配给指定用户。
#分组
在[groups]下添加:
group1=zhangsan,lisi //将zhangsan和lisi设为一组
group2=wangwu,zhuliu//将wangwu,和zhuliu设为二组
#权限设置
[/]
*=r #该版本库任何注册用户都可以查看
[/project1]
@group1=rw #一组中的所有成员(即zhangsan和lisi)对project1有读写权限
wangwu=rw #二组中的wangwu对project1有读写权限
[/project2]
@group2=rw #二组中的wanwu和zhuliu对project2有读写权限
[/project2/a2]
zhangsan=rw #一组中的zhangsan对project2中的a2文件夹中的文件有读写权限
[/project2/b2]
Lisi=rw # 一组中的lisi对project2中的b2文件中的文件有读写权限
注意:1.权限可以精细到文件夹,但不能到文件,比如到a2.txt时不可以的。
2.每次修改svnserve文件后,都要重启Svn服务