svn服务器的架设(续)

4) 权限配置文件

 

    权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。

 

    [groups]配置段中配置行格式如下:

        <用户组> = <用户列表>

    用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"(如:引用用户组"all"要使用字符串"@all")

 

    版本库路径权限段的段名格式如下:

        [<版本库名>:<路径>]

    如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"

    可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:段名为"[/tmp]"的版本库路径权限段设置了所有引用该权限配置文件的版本库中目录"/tmp"的访问权限。

 

    版本库路径权限段中配置行格式有如下三种:

        <用户名> = <权限>

        <用户组> = <权限>

        * = <权限>

    其中,"*"表示任何用户;权限的取值范围为'''r''rw'''表示对该版本库路径无任何权限,'r'表示具有只读权限,'rw'表示有读写权限。

    注意:每行配置只能配置单个用户或用户组。

 

    3:权限配置文件conf/authz的内容如下:

        [groups]

        g_admin = admin,thinker

 

        [admintools:/]

        @g_admin = rw

        * =

 

        [test:/home/thinker]

        thinker = rw

        * = r

 

    在上述配置文件中,定义了一个用户组"g_admin",该用户组包含用户"admin""thinker"。然后定义了2个版本库路径权限段。其中,版本库"admintools"只有用户组"g_admin"可读写,其他用户无任何权限;版本库"test"中路径"/home/thinker"只有用户"thinker"有读写权限,其他用户只有可读权限。

 

5) 总结

 

    在本文中,详细介绍了svnserve程序的3个配置文件。SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启svnserve服务。

    需要强调的是本文介绍的配置文件只对svnserve服务有效,即客户端通过前缀为svn://svn+ssh://URL访问版本库有效,而对通过前缀http://https://file:///URL无效。

 

另注authz配置详解

1,配置authz时,没有注意svnserve启动参数-r所指定的目录。

这里有两种情况:

A:-r直接指定到版本库(称之为单库svnserve方式)

比如,有一个库project1,位于D:\svn\project1

使用以下命令启动svnserve

svnserve -d -r D:\svn\project1

 

 

在这种情况下,一个svnserve只能为一个版本库工作

authz文件如果配置成下面这样就是错的,

[Copy to clipboard] [ - ]

CODE:

[groups]

admin=user1

dev=user2

[project1:/]

@admin=rw

@doc=r

 

 

应该配置成

[Copy to clipboard] [ - ]

CODE:

[groups]

admin=user1

dev=user2

[/]

@admin=rw

@doc=r

 

 

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

使用类似这样的URLsvn://192.168.0.1/ 即可访问project1

 

B:-r指定到版本库的上级目录(称之为多库svnserve方式)

同样,有一个库project1,位于D:\svn\project1

如果使用以下命令启动svnserve

[Copy to clipboard] [ - ]

CODE:

svnserve -d -r D:\svn

 

 

这种情况,一个svnserve可以为多个版本库工作,

这时如果想限制指定库的指定目录,就应该指定具体的库,像这样

[Copy to clipboard] [ - ]

CODE:

[groups]

admin=user1

dev=user2

[project1:/]

@admin=rw

@doc=r

 

 

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

使用类似这样的URLsvn://192.168.0.1/project1 即可访问project1

这样的URLsvn://192.168.0.1/project2 即可访问project2

 

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

 

svn对于非英文文件名和目录名使用utf-8格式编码处理,要对中文目录进行正确控制,

应该使用无BOMutf-8格式,如何将默认的文件转为utf-8

我使用的是UltraEdit的菜单"ASCII to UTF-8 (Unicode Editing)"。在UltraEdit的配置中,可以设置有无BOM

 

4.运行SVN服务器

运行SVN服务

在命令行执行

 

svnserve --daemon --root F:\lava\svn

服务启动,--daemon可简写为-d--root可简写为-r,可以建立一个批处理文件并放在windows启动组中便于开机就运行SVN服务,或者在这个地址http://clanlib.org/~mbn/svnservice/下载那个svnservice.exe文件,拷贝到E:\svn\bin目录下,再从命令行下执行:

 

svnservice -install --daemon --root "E:\svn\Repository"

sc config svnservice start= auto

net start svnservice

 

        SVNService -install <svnserve parameters> to install the service

        SVNService -setup <svnserve parameters>to change command line parameters or svnserve

        SVNService -remove         to remove the service

        SVNService -debug          to run as a console app for debugging

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值