小石头
Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
posts - 91,comments - 22,trackbacks - 0
(FAQ)基于svnserve的服务器,权限文件authz配置的常见问题及解答

最近在我用Subversion论坛(http://www.iUseSVN.com/bbs)经常有人提到这样的问题:
为什么我的客户端没有写权限?
为什么我的权限没有起作用?

总结他们的配置,发现
都是用svnserve作为服务器,
都在svnserve.conf中使用了authz-db选项

原因可能如下:

1,配置authz时,没有注意svnserve启动参数-r所指定的目录。
这里有两种情况:
A:-r直接指定到版本库(称之为单库svnserve方式)
比如,有一个库project1,位于D:\svn\project1
使用以下命令启动svnserve

svnserve -d -r D:\svn\project1

在这种情况下,一个svnserve只能为一个版本库工作
authz文件如果配置成下面这样就是错的,

[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r

应该配置成

[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r

因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。

B:-r指定到版本库的上级目录(称之为多库svnserve方式)
同样,有一个库project1,位于D:\svn\project1
如果使用以下命令启动svnserve

svnserve -d -r D:\svn

这种情况,一个svnserve可以为多个版本库工作,
这时如果想限制指定库的指定目录,就应该指定具体的库,像这样

[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r

如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录

2,对中文目录进行权限控制时,没有将权限文件authz改为utf-8格式。

svn对于非英文文件名和目录名使用utf-8格式编码处理,要对中文目录进行正确控制,
应该使用utf-8格式,如何将默认的文件转为utf-8,
我使用的是UltraEdit的菜单"ASCII to UTF-8 (Unicode Editing)"。

更多参考文档:
(配置权限控制文件)http://www.iusesvn.com/bbs/thread-6-1-1.html
(中文目录权限控制)http://www.iusesvn.com/bbs/thread-41-1-1.html

 引用  报告回复顶部
lulu
高中生
Rank: 3Rank: 3


UID 124
精华 0
积分 211
帖子 36
威望 2
金钱 209
推广积分 0
阅读权限 30
注册 2006-8-15
状态 离线
发表于 2006-8-28 16:44  资料个人空间短消息 
svnservice能实现对多个档案库的管理

也就是说,我要建多个档案库来管理不同项目,项目间彼此不关联,所以,对单个项目而言,任何改动产生的版本号是连续的。

 引用  报告回复顶部
PCplayer
教导主任
Rank: 8Rank: 8


UID 3
精华 7
积分 5870
帖子 1573
威望 291
金钱 5522
推广积分 57
阅读权限 150
注册 2006-6-3
状态 离线

用支付宝求购
回复 #2 lulu 的帖子

可以啊,参数中使用多库svnserve方式就行了

 引用  报告回复顶部
cjnn
初中生
Rank: 2



UID 210
精华 0
积分 70
帖子 13
威望 0
金钱 70
推广积分 0
阅读权限 20
注册 2006-9-6
状态 离线
发表于 2006-9-6 16:53  资料文集短消息 
我的根目录的权限管用了,但子目录还不行

我按楼主说的,做了如下操作:
  svnservice -install -d -r e:\svnhome

然后配置authz如下:
  [/]
  Admin = rw
  * = r
  [/Trunk]
  chenjie = rw
  * = r

结果是,根目录的权限管用了,但子目录还不行.
即:我可以用Admin在svnhome下任意目录执行读写操作.可以用chenjie在svnhome下任意目录执行读操作.
但是用chenjie在Trunk目录中无法执行写操作

求助!谢谢!
 引用  报告回复顶部
PCplayer
教导主任
Rank: 8Rank: 8


UID 3
精华 7
积分 5870
帖子 1573
威望 291
金钱 5522
推广积分 57
阅读权限 150
注册 2006-6-3
状态 离线

用支付宝求购
回复 #4 cjnn 的帖子

请注意单库多库的区别,
svnhome目录下有哪些内容?
 引用  报告回复顶部
cjnn
初中生
Rank: 2



UID 210
精华 0
积分 70
帖子 13
威望 0
金钱 70
推广积分 0
阅读权限 20
注册 2006-9-6
状态 离线
发表于 2006-9-6 18:12  资料文集短消息 
svnhome目录下,有:
  Branches
  Tags
  Trunk

我觉得我设的应该是单库吧,把svnhome做为一个库
 引用  报告回复顶部
PCplayer
教导主任
Rank: 8Rank: 8


UID 3
精华 7
积分 5870
帖子 1573
威望 291
金钱 5522
推广积分 57
阅读权限 150
注册 2006-6-3
状态 离线

用支付宝求购
我是指e:\svnhome下有哪些内容
 引用  报告回复顶部
cjnn
初中生
Rank: 2



UID 210
精华 0
积分 70
帖子 13
威望 0
金钱 70
推广积分 0
阅读权限 20
注册 2006-9-6
状态 离线
发表于 2006-9-7 09:33  资料文集短消息 
E:\svnhome下的内容:
        \conf
        \dav
        \db
        \hooks
        \locks
        format
        README.txt
 引用  报告回复顶部
PCplayer
教导主任
Rank: 8Rank: 8


UID 3
精华 7
积分 5870
帖子 1573
威望 291
金钱 5522
推广积分 57
阅读权限 150
注册 2006-6-3
状态 离线

用支付宝求购
回复 #8 cjnn 的帖子

确保你的svn版本为1.3.2
 引用  报告回复顶部
cjnn
初中生
Rank: 2



UID 210
精华 0
积分 70
帖子 13
威望 0
金钱 70
推广积分 0
阅读权限 20
注册 2006-9-6
状态 离线
发表于 2006-9-7 10:11  资料文集短消息 
回复 #9 PCplayer 的帖子

我是装的这些:
svn-1.3.2-setup.exe
TortoiseSVN-1.3.5.6804-svn-1.3.2.msi
LanguagePack-1.3.5.6804-win32-zh_CN.exe
 引用  报告回复顶部
PCplayer
教导主任
Rank: 8Rank: 8


UID 3
精华 7
积分 5870
帖子 1573
威望 291
金钱 5522
推广积分 57
阅读权限 150
注册 2006-6-3
状态 离线

用支付宝求购
如果是这样,不应该有问题的。
再检查一下你的启动参数是不是确实为单库的,
你试着用多库方式配置看看如何,
另外注意如果有中文,应该将authz改为utf-8格式(这方面请搜索论坛文章)
 引用  报告回复顶部
cjnn
初中生
Rank: 2



UID 210
精华 0
积分 70
帖子 13
威望 0
金钱 70
推广积分 0
阅读权限 20
注册 2006-9-6
状态 离线
发表于 2006-9-7 13:26  资料文集短消息 
回复 #11 PCplayer 的帖子

好吧,我再试试
谢谢你!
 引用  报告回复顶部
zpqs
小学生
Rank: 1



UID 289
精华 0
积分 17
帖子 6
威望 2
金钱 15
推广积分 0
阅读权限 10
注册 2006-9-22
状态 离线
发表于 2006-9-22 14:55  资料文集短消息 
svn下有p1  p2   p3 三个仓库,svn是根
AuthzSVNAccessFile 怎么指向?

<Location /svn>
   DAV svn
#   SVNPath /home/server/servers/svn
   SVNParentPath /home/server/servers/svn   ==>多库
   AuthzSVNAccessFile /home/server/servers/svn/p1/conf/authz   ==?????

   Satisfy Any
   Require valid-user
   AuthType Basic
   AuthName "身份验证"
   AuthUserFile "/home/server/servers/svnuser.passwd"
</Location>
 引用  报告回复顶部
PCplayer
教导主任
Rank: 8Rank: 8


UID 3
精华 7
积分 5870
帖子 1573
威望 291
金钱 5522
推广积分 57
阅读权限 150
注册 2006-6-3
状态 离线

用支付宝求购
回复 #13 zpqs 的帖子

Apache的授权文件跟svnserve的是两回事
如果使用apache,跟svnserve方式中的svnserve.conf,passwd,authz都没关系,
你自己完全可以另外指定:通过SVNParentPath 和 AuthzSVNAccessFile

请参考论坛文章
 引用  报告回复顶部
zpqs
小学生
Rank: 1



UID 289
精华 0
积分 17
帖子 6
威望 2
金钱 15
推广积分 0
阅读权限 10
注册 2006-9-22
状态 离线
发表于 2006-9-22 16:37  资料文集短消息 
ok thank u.
 引用  报告回复
posted on 2007-03-04 14:36 小石头 阅读(507) 评论(0)  编辑  收藏 所属分类: Subversion

只有注册用户登录后才能发表评论。


网站导航: