Windows下SVN权限配置

     按照前面的教程装完1.6.1版以后,当svnadmin create D;\svn创建仓库后,应该在仓库目录下的config目录有3个文件—

authz、passwd、svnserve.conf。

下面对3个文件进行说明:

1、svnserve.conf

      svnserve.conf是基础的配置,用于控制访问的权限将[general]前的注释(#)与空格去掉,一定要去掉空格,否则到时客户端登录会出现"Section header must start in the first column的”的告警!亲身体会啊!!最后此文件内容至少包含以下内容:

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

       其中,anon-access = none禁止匿名登录,auth-access = write为署名登录获得写权限,password-db = passwd指定用户配置文件,authz-db = authz指定权限配置文件

2、passwd

passwd是用户配置文件,用于设置用户名以及密码

格式为:

[users]
用户1 = 密码1
用户2 = 密码2

     其中用户名,密码不能为中文,至少我设中文登录时提示没有该用户, [users]是必须的。下面列出要访问svn的用户,每个用户一行。

示例:

[users]
alan = password
king = hello

这个里面的user表示当前test版本库的成员

3、authz

authz是详细的用户授权文件

其中 rw 表示读写,  r 表示只读,  *= 禁止所有用户访问,*代表所有用户,权限为空代表没有任何权限

格式如下(以下内容转载,感谢原创):

  用户组格式:

[groups]
用户组名 = 用户1,用户2

  其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。用户必须要在passwd文件里能找到,它是给那个里面的user赋权限.

  版本库目录格式:

[/目录]
 @用户组名 = 权限
 用户名= 权限

  示例:

[groups]
  admin = alan

 [/]
 @admin = rw

 [/svn/p1]
 king = rw(表示king能够读写/svn/p1目录下的所有信息)

 [/svn/p1/web]
 zp=r(表示zp能够读/svn/p1/web目录下的所有信息)

  

以下是自己的体会:

注意:@admin代表整个组,king 在这里只是一个用户

关于访问路径[/目录],其完整格式[repos-name:path]或者[path],repos-name是版本库的名字

注意:在authz中如果要设定中文文件夹的路径,例如[/测试],请在linux在双击文件用默认记事本打开,然后另存为,注意将编码格式改为UNICODE UTF-8,否则在windows下用TortoiseSVN进行操作时,该中文路径的权限设置会有问题!此乃我的实际测试

FAQ:

1、路径或权限不足时将出现错误信息提示:

http://localhost (路径不对)

Error * PROPFIND request failed on '/' PROPFIND of '/': 200 OK (http://localhost)

http://localhost/svn (权限不足) 

Error * PROPFIND request failed on '/svn' PROPFIND of '/svn': 403 Forbidden (http://localhost)

http://localhost/svn/repos (正常显示)

http://localhost/repos (权限不允许) 

Error * PROPFIND request failed on '/repos' PROPFIND of '/repos': 405 Method Not Allowed (http://localhost)

2、不启动E:\subversion\bin\svnserve.exe ,但启动了ApacheSVN ,访问(tortoiseSVN –> Repo – browser)或提交(SVN Commit)情形如下:

现象:svn://localhost/svn/repos 不能访问或提交,提示:Error * Can't connect to host 'localhost': 由于目标机器积极拒绝,无法连接。 但 file:///e:/svn/repos 和 http://localhost/svn/repos 可以访问或提交。

原因:svn:// 是独立服务器 svnserver 自己的协议。file:/// 是本地访问,即服务器端和客户端在一个机器上。