《SVN宇宙版教程》:第一章 SVN中的权限管理与Import和Checkout详解-2

1.5 使用SVN协议来操作仓库

前面的章节都是使用http协议来操作SVN仓库,主要的内容就是限制匿名与非匿名用户是否拥有读或写权限,其实SVN中还支持自己独有的svn://协议来访问SVN仓库。

1.5.1 默认情况下匿名用户可读不可写

Step01:在继续新章节知识点之前,要先将SVN安装路径中的C:\Program Files\CollabNet\Subversion Server\httpd\conf\httpd.conf文件内容初始化如下的代码:

<Location /svn>

   DAV svn

   SVNParentPath C:\svn_repository

</Location>

    作用就是重置实验环境。

Step02:在C:\svn_repository路径中创建名称为test1的仓库。

Step03:重启svn和Apache的Service服务。

Step04:输入路径svn://localhost/test1来访问test1仓库,如图1.58所示。

图1.58 使用svn协议可以匿名读仓库

 

    Step05:当对仓库test1执行Import导入的操作时出现异常如图1.59所示。

图1.59 匿名不可写

 

1.5.2 设置匿名用户可读可写

    如果想使用svn://协议进行匿名写怎么办呢?

Step01:将C:\svn_repository\test1\conf\svnserve.conf文件的内容编辑如下:

[general]

anon-access = write

    Step02:重启SVN及Apache服务。

    Step03:将任意文件导入到svn://localhost/test1路径中,出现成功提示如图1.60所示。

图1.60 匿名写成功

 

    导入Import成功,说明如果使用svn://协议对仓库进行操作的权限配置是要在C:\svn_repository\test1\conf\svnserve.conf文件中进行定义的。

实验进行到这,已经实现下面2种情况:

  1. 在默认的情况下(不修改svnserve.conf文件),匿名可读不可写
  2. 在修改svnserve.conf文件后使匿名用户具有可读/写权限

下一步要实现:

  1. 屏蔽匿名读,在屏蔽匿名读的情况下自然也不可写了

1.5.3 设置匿名用户不可读不可写

那如果使用svn://协议不允许匿名读呢?也就是不允许未登陆时查看仓库中的内容。

Step01:将C:\svn_repository\test1\conf\svnserve.conf文件的内容编辑如下:

[general]

anon-access = none

    把原来的#号和空格要去掉,属性anon-access的值还要改成none。

Step02:重启svn和Apache的Service服务。

    Step03:再执行svn://localhost/test1网址时出现异常如图1.61所示。

图1.61 使用svn协议屏蔽匿名读操作

 

在上面的界面中输入正确的基于svn://协议的仓库地址后并没有显示出仓库中的内容,并且登陆界面也没有出现,彻彻底底的切断了匿名访问仓库的权限,也就是仓库在系统中存在,用任何的办法也访问不了,所以就要添加账号,但此账号是用在基于SVN协议的访问仓库,实现验证用户的读写权限。

1.5.4 设置验证用户可读可写

    Step01:继续更改C:\svn_repository\test1\conf\svnserve.conf文件中的代码,更改后的代码如下:

[general]

anon-access = none

# auth-access = write

password-db = passwd

    配置anon-access = none的作用是匿名不可读不可写,配置password-db = passwd代表使用passwd文件中的用户信息进行登陆。

    Step02:继续更改C:\svn_repository\test1\conf\passwd文件中的内容如下:

[users]

ghy=123

    Step03:重新启动SVN和Apache服务。

    Step04:再执行svn://localhost/test1网址时出现登陆界面如图1.62所示。

图1.62 出现登陆界面

 

    Step05:输入正确的用户名ghy和密码123后单击OK按钮成功看到test1仓库中的内容如图1.63所示。

图1.63 验证登陆成功

 

    Step06:这时如果用ghy账号往test1仓库中Import数据是成功的,如图1.64所示。

图1.64 成功导入

 

成功Import导入的结果说明使用如下的配置代码:

[general]

anon-access = none

# auth-access = write

password-db = passwd

当验证用户登陆成功后默认情况下是可以执行Import导入操作的。

那如果想屏蔽登陆用户的Import导入/写权限呢?

1.5.5 设置验证用户可读不可写

    Step01:继续更改C:\svn_repository\test1\conf\svnserve.conf文件中的代码如下:

[general]

anon-access = none

auth-access = read

password-db = passwd

    代码auth-access = read的含义是登陆账号只有读无写的权限。

    Step02:重新启动SVN和Apache服务。

    Step03:再次对test1仓库进行Import操作后的效果如图1.65所示。

图1.65 登陆用户只有读无写的权限

 

    在这里需要说明的是,账号验证用户ghy只在使用svn://协议时有效,如果使用http协议访问test1仓库时是直接打开仓库,并不出现登陆界面,从此现象来看使用svn协议使用的是SVN服务,Http协议使用的是Apache服务,svn://协议使用的是C:\svn_repository\test1\conf\svnserve.conf文件中的代码来进行匿名与非匿名用户权限的配置,而基于http://协议访问仓库的权限是根据C:\Program Files\CollabNet\Subversion Server\httpd\conf\httpd.conf文件中的配置来定义的,由于它们使用的服务不一样,所以svn://和http://协议它们各有自己的验证方式。

1.5.6 设置匿名用户可读不可写登陆用户可写可读的权限

    当使用svn://协议操作开源项目时,大多数都要设置匿名用户可读不可写,而登陆用户可写可读的权限。

    Step01:更改C:\svn_repository\test1\conf\svnserve.conf文件中的代码如下:

[general]

anon-access = read

auth-access = write

password-db = passwd

    Step02:重新启动SVN和Apache服务。

Step03:再执行svn://localhost/test1网址时出现界面如图1.66所示。

图1.66 匿名可读

 

    Step04:当对test1执行Import操作时弹出登陆界面,如图1.67所示。

图1.67 登陆用户可写

 

    Step05:成功Import的界面如图1.68所示。

图1.68 登陆用户成功Import导入文件

 

1.6 使用SVN协议操作仓库的权限配置

通过前面章节中的演示可以发现,在仓库test中conf\passwd文件里新添加1个用户时,在默认的情况下只要这个用户成功登陆,则这个用户拥有操作仓库全部的权限,在真实的环境中还是需要对用户进行权限的细化配置。

在权限分配时,应遵守从根目录到子目录,从设置最广泛权限到最精细权限,从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限,在SVN中目录的访问权限可以分配给组,也可以分配给指定的用户。

    更改C:\svn_repository\test1\conf\passwd文件中的代码如下:

[users]

gaohongyan1=123

gaohongyan2=123

gaohongyan3=123

gaohongyan4=123

    上面的代码创建了4个用户。

    更改C:\svn_repository\test1\conf\svnserve.conf文件中的代码如下:

[general]

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

     为了正确的测试登陆用户的权限,所以将匿名用户设置为无任何的权限。上面的代码有2处与权限有关的配置:

auth-access = write

authz-db = authz

    代码authz-db的作用是使用authz文件做为权限的细化分配的定义。

1.6.1 设置gaohongyan2用户拥有只读权限

    Step01:在默认的情况下authz文件中的内容如下:

[aliases]

# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

 

[groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

 

# [/foo/bar]

# harry = rw

# &joe = r

# * =

 

# [repository:/baz/fuz]

# @harry_and_sally = rw

# * = r

    Step02:更改上面的权限配置代码如下:

[aliases]

ghy1=gaohongyan1

ghy2=gaohongyan2

ghy3=gaohongyan3

ghy4=gaohongyan4

 

[/]

&ghy2=r

[aliases]的作用是将字母比较多的用户名起别名,为了减少配置的代码量。引用别名ghy2前面要加&符号。

[/]的作用是设置整个仓库对gaohongyan2用户只拥有读的权限。

Step03:重新启动SVN及Apache服务。

    Step04:输入svn://localhost/test1网址后用账号gaohongyan2及密码123登陆后可以看到仓库中的内容,但将数据Import导入到仓库test1时出现异常,如图1.69所示。

图1.69 用户gaohongyan2无写权限

 

    Step05:如果想让gaohongyan2用户拥有写权限则可以配置代码:

[aliases]

ghy1=gaohongyan1

ghy2=gaohongyan2

ghy3=gaohongyan3

ghy4=gaohongyan4

 

[/]

&ghy2=rw

Step06:重启服务后执行Import操作是成功的。

本实验结束后,可以总结代码:

auth-access = write

authz-db = authz

    当代码authz-db = authz被启用,也就是不再被注释时,配置代码auth-access = write的作用被忽略。

1.6.2 不使用别名aliases和未对用户分配权限的示例

前面的章节使用别名[aliases]来减化用户名的字母长度,本章节将实验不使用别名的情况下是否能正确操作仓库。

Step01:更改authz文件的代码如下:

[aliases]

ghy1=gaohongyan1

ghy2=gaohongyan2

ghy3=gaohongyan3

ghy4=gaohongyan4

 

[/]

&ghy2=rw

gaohongyan3=rw

    上面代码中对[/]每个仓库根路径与用户进行权限关联,从代码中可以发现,并未出现对gaohongyan1做任何的权限分配,这时来看看gaohongyan1拥有哪些权限。

Step02:重启SVN及Apache服务。

Step03:输入网址svn://localhost/test1后弹出登陆界面,输入gaohongyan1及密码123后的界面效果如图1.70所示。

图1.70 账号gaohongyan1无任何的权限

 

上面的示例可以总结出如果从未对路径与用户进行绑定,则gaohongyan1用户无任何的权限,即使在passwd文件中配置gaohongyan1账号也无济于事。

    那么,当直接使用gaohongyan3账号,不使用别名配置时是可以对仓库test1拥有完全的读写权限的,也就是在authz文件中可以使用别名的功能,也可以不使用别名的功能。

1.6.3 对用户进行分组groups

对用户进行分组可以方便的对相同权限的用户进行管理,在这里建议大家组名和用户名的名称尽量不要一致,这样容易产生混淆。

Step01:更改authz文件的代码如下:

[aliases]

ghy1=gaohongyan1

ghy2=gaohongyan2

ghy3=gaohongyan3

ghy4=gaohongyan4

 

[groups]

group1=&ghy1,&ghy2

group2=&ghy1,gaohongyan3

group3=gaohongyan3,gaohongyan4

 

[/]

@group1=r

@group2=rw

@group3=rw

    通过使用@符号来引用组名。

    上面代码的作用是配置了3个组,组group1对仓库拥有读权限,而组group2和group3对仓库拥有读写权限。

    Step02:重启SVN及Apache服务。

    Step03:可以在计算机中使用group3的gaohongyan3和gaohongyan4用户进行测试,得出的结论是这2个账户对test1仓库拥有完全的读写操作。

    Step04:继续在计算机中使用group2的&ghy1和gaohongyan3用户进行测试,得出的结论是这2个账户对test1仓库也拥有完全的读写操作。

    前2组测试完毕后可以发现,group1和group2都对账户gaohongyan1进行了权限的配置,而group2中的gaohongyan1账号拥有读写权限,所以可以总结出如果各个group中有相同的用户时则使用权限最大的那个权限。根据这个总结,可以得出用户gaohongyan2只拥有读权限,所以使用gaohongyan2账号执行Import操作时出现错误如图1.71所示。

图1.71 账号gaohongyan2只拥有读权限不能Import导入

 

1.6.4 共用authz权限文件与[/]和[/xx/yy]和[repository:/xx/yy]路径

在启动CollabNet Subversion svnserve服务时,可执行文件的路径如图1.72所示。

图1.72 启动服务的选项

 

完整的路径为:

"C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "c:\svn_repository" --listen-port "3690"

其中启动参数"c:\svn_repository"的含义是将"c:\svn_repository"路径中所有的文件夹当成仓库,这些信息被加载到内存中供svn://协议调用。

    这时如果在authz文件中使用[/]来配置权限,会对所有仓库的根目录进行权限配置,注意,要有一个前题,这些仓库使用同一个authz验证文件。

    Step01:在C:\svn_repository路径中创建a和b仓库,如图1.73所示。

图1.73 创建a和b仓库

 

    Step02:对C:\svn_repository\a\conf\authz文件编辑代码如下:

[/]

ghy1=r

ghy2=r

    符号[/]代表在a仓库中就定义了对所有仓库根文件夹拥有读权限。

    Step03:对C:\svn_repository\a\conf\passwd文件编辑代码如下:

[users]

ghy1=123

ghy2=123

    Step04:对C:\svn_repository\a\conf\svnserve.conf文件编辑代码如下:

[general]

anon-access = read

auth-access = write

password-db = passwd

authz-db = authz

    Step05:重启SVN及Apache服务。

    Step06:当用ghy1账号向仓库a执行Import时,在登陆界面中输入ghy1如图1.74所示。

图1.74 登陆界面输入ghy1

 

    Step07:当单击OK按钮时出现异常如图1.75所示。

图1.75 账号ghy1没有写权限

 

    Step08:当对仓库b执行Import导入时直接出现异常界面,而没有出现登陆界面,如图1.76所示。

图1.76 直接出现异常界面

 

为什么会是这样的情况呢?其实很简单,因为仓库b的路径C:\svn_repository\b\conf中的所有文件都是默认的,并没有被更改,所以如果使用svn://协议向仓库b导入数据时默认是只读不可写的。

    Step09:使用[/]配置的主要目的就是创建1个全局的仓库根文件夹权限,因为[/]会对所有仓库添加权限。这时可以将a仓库中的authz文件和passwd文件移动到C:\allauthz文件夹中,然后配置C:\svn_repository\a\conf\svnserve.conf内容如下:

[general]

anon-access = read

auth-access = write

password-db = C:\allauthz\passwd

authz-db = C:\allauthz\authz

    Step10:继续配置C:\svn_repository\b\conf\svnserve.conf内容如下:

[general]

anon-access = read

auth-access = write

password-db = C:\allauthz\passwd

authz-db = C:\allauthz\authz

    Step11:更改C:\allauthz\authz文件内容如下:

[/]

ghy1=r

ghy2=rw

    Step12:更改C:\allauthz\ passwd文件内容如下:

[users]

ghy1=123

ghy2=123

    Step13:重启SVN和Apache服务。

Step14:测试结果如下:

用ghy1账号对a仓库根文件夹执行Import时出现没有权限的异常。

    用ghy1账号对b仓库根文件夹执行Import时出现没有权限的异常。

    用ghy2账号对a仓库根文件夹执行Import时成功导入。

    用ghy2账号对b仓库根文件夹执行Import时成功导入。

    说明创建1个通用的authz及passwd文件是成功的。

    上面的步骤是创建1个通用的authz及passwd文件,使用[/]选项来对每个仓库进行权限配置。那么[/]配置的写法还有另外一种,也就是[/路径/路径/路径]这样的写法,此种写法的主要目的是对每个仓库的各个“/路径/路径/路径”路径进行权限的配置。

    Step15:更改C:\allauthz\authz文件内容如下:

[/]

ghy1=r

ghy2=rw

[/trunk]

ghy1=r

ghy2=rw

上面的配置[/]使ghy1用户对每个仓库的根文件夹拥有读权限,ghy2拥有读写权限。

而配置[/trunk]使ghy1用户对每个仓库的/trunk路径拥有读权限,ghy2用户拥有读写权限。

    Step16:重启SVN和Apache服务。

Step17:测试结果如下:

用ghy1账号对a仓库根文件夹执行Import时出现没有权限的异常。

    用ghy1账号对b仓库根文件夹执行Import时出现没有权限的异常。

    用ghy2账号对a仓库根文件夹执行Import时成功导入。

    用ghy2账号对b仓库根文件夹执行Import时成功导入。

 

    用ghy1账号对a仓库/ trunk执行Import时出现没有权限的异常。

    用ghy1账号对b仓库/ trunk执行Import时出现没有权限的异常。

    用ghy2账号对a仓库/ trunk执行Import时成功导入。

    用ghy2账号对b仓库/ trunk执行Import时成功导入。

 

上面的实验可以总结出TortoiseSVN软件可以针对每一个目录进行权限的控制。

    通过[/]可以对所有的仓库的根目录进行权限的配置,使用选项[/xx/yy]可以对所有仓库的指定文件夹进行权限的配置,还可以使用[repository:/xx/yy]来对指定仓库的指定文件夹进行权限的配置。

    Step18:更改C:\allauthz\authz文件内容如下:

[a:/trunk]

ghy1=rw

 

[b:/trunk]

ghy2=r

    Step19:重启SVN和Apache服务。

Step20:测试结果如下:

用ghy1账号对a仓库trunk执行Import时成功导入。

    用ghy1账号对b仓库trunk执行Import时出现没有权限的异常。

    用ghy2账号对a仓库trunk执行Import时出现没有权限的异常。

    用ghy2账号对b仓库trunk执行Import时出现没有权限的异常。

 

1.6.5 标记$authenticated和$anonymous和*和~

    在学习新的知识点前,使用前面章节的实验环境来学习新的知识。

标记$authenticated代表任意登陆用户,标记$anonymous代表任意匿名用户,*代表任意人。~代表将当前角色的权限进行反转,也就是取反的操作。

    Step01:更改C:\allauthz\authz文件内容如下:

[a:/trunk]

$authenticated=r

    Step02:重启SVN和Apache服务。

    Step03:用ghy1账号对a仓库trunk执行Import时出现没有权限的异常。

    Step04:用ghy2账号对a仓库trunk执行Import时出现没有权限的异常。

    Step05:更改C:\allauthz\authz文件内容如下:

[a:/trunk]

*=rw

    Step06:重启SVN和Apache服务。

    Step07:用ghy1账号对a仓库trunk执行Import时成功导入。

    Step08:用ghy2账号对a仓库trunk执行Import时成功导入。

    Step09:更改C:\allauthz\authz文件内容如下:

[a:/trunk]

~$anonymous =r

    配置~$anonymous =r的作用代表非匿名用户对trunk文件夹可读不可写。

    Step10:重启SVN和Apache服务。

Step11:

用ghy1账号对a仓库trunk执行Import时出现没有权限的异常。

    用ghy2账号对a仓库trunk执行Import时出现没有权限的异常。

    Step12:更改C:\allauthz\authz文件内容如下:

[a:/trunk]

$authenticated =

    配置$authenticated =代表登陆用户对trunk文件夹不可读不可写,也就是无任何权限。

1.6.6 权限的继承与存在*=和不存在的区别

    在SVN中,权限是可以继承的,本实验就来验证这个权限继承的特性,还要验证一下*=配置的作用。

    Step01:创建新的仓库ghytest,如图1.77所示。

图1.77 创建ghytest仓库

 

    Step02:更改C:\svn_repository\ghytest\conf路径中svnserve.conf文件的配置代码如下:

[general]

anon-access = read

auth-access = write

password-db = passwd

authz-db = C:\svn_repository\ghytest\conf\authz

 

    Step03:更改C:\svn_repository\ghytest\conf路径中passwd文件的配置代码如图1.78所示。

图1.78 添加1个ghyghy账号密码123

 

    Step04:更改C:\svn_repository\ghytest\conf\authz文件的配置代码如图1.79所示。

图1.79 配置authz权限文件

 

Step05:重启SVN和Apache服务后测试结果如下:

使用ghyghy1用户对ghytest根文件夹执行Import导入成功

使用ghyghy2用户对ghytest根文件夹执行Import导入成功

使用ghyghy1用户对ghytest根文件夹中的trunk文件夹执行Import导入成功

使用ghyghy2用户对ghytest根文件夹中的trunk文件夹执行Import导入成功

 

    上面的步骤说明如果对仓库的根目录配置了rw权限,那么在默认的情况下,对所有的子孙文件夹都具有rw权限,这就是SVN权限的继承。

 

    Step06:更改C:\svn_repository\ghytest\conf\authz文件的配置代码如图1.80所示。

图1.80 加入*=的配置

 

Step07:重启SVN和Apache服务后测试结果如下:

使用ghyghy1用户对ghytest根文件夹执行Import导入成功

使用ghyghy2用户对ghytest根文件夹执行Import导入成功

使用ghyghy1用户对ghytest根文件夹中的trunk文件夹执行Import导入失败

使用ghyghy2用户对ghytest根文件夹中的trunk文件夹执行Import导入成功

 

    那么上面的配置代码:

[ghytest:/trunk]

*=

ghyghy2=rw

作用就是ghyghy2用户拥有对ghytest:/trunk路径的读写权限,*=代表其它用户没有读写权限,也就是ghyghy1用户都找不到trunk文件夹,trunk文件夹对ghyghy1用户是隐藏的。

 

1.6.7 权限配置*=r和*=之间的区别

    Step01:创建测试用的仓库abc,配置abc仓库中的C:\svn_repository\abc\conf\svnserve.conf文件内容如图1.81所示。

图1.81 文件svnserve.conf的配置

 

Step02:配置abc仓库中的C:\svn_repository\abc\conf\authz文件内容如图1.82所示。

图1.82 文件authz的配置

 

Step03:配置abc仓库中的C:\svn_repository\abc\conf\passwd文件内容如图1.83所示。

图1.83 文件password的配置

 

Step04:重启SVN和Apache服务。

Step05:使用svn://协议访问abc仓库,url如下:

svn://localhost/abc

    在IE上弹出登陆界面如图1.84所示。

图1.84 弹出登陆界面

 

    Step06:在登陆界面中输入账号ghy1及密码123后单击OK按钮弹出无权限访问的提示,效果如图1.85所示。

图1.85 不可读

 

说明权限*=的作用使URL路径不可以访问。

Step07:更改C:\svn_repository\abc\conf\authz文件内容如图1.86所示。

图1.86 文件authz的配置

 

Step08:重启SVN和Apache服务。

Step09:使用svn://协议访问abc仓库,url如下:

svn://localhost/abc

    在IE上弹出登陆界面输入ghy1及123后正确显示出仓库中的内容,如图1.87所示。

图1.87 仓库abc可读

 

    Step10:尝试着向abc仓库导入数据时出现异常如图1.88所示。

图1.88 可读不可写

 

说明权限*=r的作用使URL路径中的内容可读但不可写。

1.6.8 取消自动登陆

    如果在登陆的界面中对选项进行了复选,也就意味着使用自动登陆,如图1.89所示。

图1.89 自动登陆

 

如果想取消自动登陆,可以将C:\Documents and Settings\class\Application Data\Subversion\auth\svn.simple路径中的文件删除,这时自动登陆功能取消了,重新显示出登陆界面了。

    另外也可以进入TortoiseSVN的settings设置界面单击Authentication data右边的Clear按钮也可以取消自动登陆,如图1.90所示。

图1.90 单击Clear按钮

 

单击按钮的本质其实还是将C:\Documents and Settings\class\Application Data\Subversion\auth\svn.simple路径中的文件进行删除。

1.6.9 权限配置中/符号的注意事项

    在前面对仓库的根文件夹配置权限时使用如下的配置代码:

[abc:/]

配置根文件夹时要使用/符号,但需要注意的是,对其子文件夹的配置一定不要加/符号,不然会出现无权限的错误。

Step01:继续使用前面实验用的仓库abc,更改authz文件配置代码如下:

[abc:/trunk]

*=r

Step02:重启SVN和Apache服务。

Step03:使用svn://协议访问abc仓库,url如下:

svn://localhost/abc/trunk

    Step04:弹出登陆界面中输入账号ghy1及密码123后正确显示trunk文件夹中的内容如图1.91所示。

图1.91 显示trunk文件夹中的内容

 

Step05:更改authz文件配置代码如下:

[abc:/trunk/]

*=r

Step06:重启SVN和Apache服务。

Step07:使用svn://协议访问abc仓库,url如下:

svn://localhost/abc/trunk

    出现界面如图1.92所示。

图1.92 加了/符号就是无权限

1.7 使用HTTP协议操作仓库的权限配置

    前面的章节都是使用svn://协议来操作SVN仓库,其实还可以将svn与Apache服务器结合来实现基于http协议的版本控制。

在文件C:\Program Files\CollabNet\Subversion Server\httpd\conf\httpd.conf结尾处有默认的配置代码:

<Location /svn>

   DAV svn

   SVNParentPath C:\svn_repository

</Location>

也就是使用URL:http://localhost:7070/svn/a就可以访问仓库a,当看到如图1.93所示的界面时说明可以使用http协议正常访问svn的仓库。

图1.93 使用http协议访问svn正常

 

    配置代码SVNParentPath C:\svn_repository表示C:\svn_repository下的每个子目录都是一个版本库,可以通过http://ip:7070/svn/ahttp://ip:7070/svn/b来访问。

但虽然通过http协议可以访问svn服务,但并未设置权限,所以下一步就需要在Apache服务器软件中配置操作svn服务的权限了。

Step01:创建仓库z。

Step02:并使用htpasswd.exe命令在c:\password.ini文件中创建2个账号abc1及abc2。

Step03:编辑C:\allauthz\authz文件内容如下:

[z:/trunk]

abc1=r

abc2=rw

Step04:编辑文件C:\Program Files\CollabNet\Subversion Server\httpd\conf\httpd.conf添加验证的配置代码:

LoadModule authz_svn_module modules/mod_authz_svn.so

    Step05:并继续添加配置代码:

<Location /svn>

  DAV svn

  SVNParentPath C:\svn_repository

 

  AuthzSVNAccessFile C:\allauthz\authz

  Require valid-user

 

  AuthType Basic

  AuthName "Subversion repository"

  AuthUserFile c:\password.ini

</Location>

    Step06:重启SVN和Apache服务器。

Step07:当输入网址:

http://localhost:7070/svn/z/trunk/

后弹出登陆界面如图1.94,使用abc1用户登陆后显示出仓库中的内容。

图1.94 使用abc1账号登陆

 

Step08:当使用账号abc1向http://localhost:7070/svn/z/trunk/导入Import数据时出现无权限的异常,而使用账号abc2向http://localhost:7070/svn/z/trunk/导入Import数据时则正常,说明权限配置成功。

上面的实验说明SVN的authz文件可以与Apache服务器进行整合,从而在使用基于http://协议访问仓库时进行权限的配置。

    Step09:继续更改C:\allauthz\authz文件中的配置如下:

[/]

*=

 

[z:/trunk]

ghy1=rw

    上面配置代码的作用是将ghy1用户只拥有z仓库的trunk文件夹的读写操作,对其它文件夹无任何的权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值