提问的智慧SVN版 - 提问者必读
 35 12
发新话题
打印

[原创] 基于svnserve的服务器,权限文件authz配置的常见问题及解答

基于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的根目录,而按上面的启动参数,是没有库的概念的。
使用类似这样的URL:svn://192.168.0.1/ 即可访问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目录
使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1
这样的URL:svn://192.168.0.1/project2 即可访问project2

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

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

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

(Apache的单库多库问题)http://bbs.iusesvn.com/thread-158-1-1.html
本帖最近评分记录
  • 三少 金币 +1 精品文章 07-8-16 10:50

TOP

svnservice能实现对多个档案库的管理吗

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

TOP

回复 #2 lulu 的帖子

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

TOP

我的根目录的权限管用了,但子目录还不行

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

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

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

求助!谢谢!

TOP

回复 #4 cjnn 的帖子

请注意单库多库的区别,
svnhome目录下有哪些内容?

TOP

svnhome目录下,有:
  Branches
  Tags
  Trunk

我觉得我设的应该是单库吧,把svnhome做为一个库

TOP

我是指e:\svnhome下有哪些内容

TOP

E:\svnhome下的内容:
        \conf
        \dav
        \db
        \hooks
        \locks
        format
        README.txt

TOP

回复 #8 cjnn 的帖子

确保你的svn版本为1.3.2

TOP


回复 #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

TOP

如果是这样,不应该有问题的。
再检查一下你的启动参数是不是确实为单库的,
你试着用多库方式配置看看如何,
另外注意如果有中文,应该将authz改为utf-8格式(这方面请搜索论坛文章)

TOP

回复 #11 PCplayer 的帖子

好吧,我再试试
谢谢你!

TOP

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>

TOP

回复 #13 zpqs 的帖子

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

请参考论坛文章

TOP

ok thank u.

TOP

挺好的:)))

TOP

多库时的image这么来做?举例:BTNSfirm是库AEC的上级目录,image时用svnserve -d -r c:\BTNSfirm\AEC,还是svnserve -d -r c:\BTNSfirm?导入的URL是什么svn://localhost/BTNSfirm还是svn://localhost/BTNSfirm/AEC

TOP

回复 #17 leino11121 的帖子

多库的话,这样
svnserve -d -r  c:\BTNSfirm
svn://localhost/AEC

  • 提问前先用多种搜索方式、多种可能的关键字对论坛进行搜索
  • 提问时详细描述软件版本,自己要做什么,做了什么,遇到了什么
  • 最后的绝招:PM版主
  • 问题解决后,请自行将“求助”修改为“已解决”

TOP

我看过了,如果是单库的话,就svnserve -d- r 这个库的路径,如果是多库的话,就svnserve -d -r 所有库的根目录

[ 本帖最后由 PCplayer 于 2007-5-22 17:10 编辑 ]

TOP


不错,用了!!!!

TOP

 35 12
发新话题
订阅 我用Subversion - SVN中文论坛 邮件列表:iUseSVN@googlegroups.com
电子邮件:
网站重要事项将会在这个列表进行通知,点击这里浏览存于列表中的所有邮件