Chinaunix首页 | 论坛 | 博客
  • 博客访问: 866081
  • 博文数量: 189
  • 博客积分: 4310
  • 博客等级: 上校
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-27 08:56
文章分类

全部博文(189)

文章存档

2015年(1)

2013年(2)

2012年(1)

2011年(39)

2010年(98)

2009年(48)

分类: Python/Ruby

2011-10-27 09:36:22

九 权限控制


SVN的使用中,存在“认证”、“授权”两个概念。认证,即authentication,是指用户名与密码的认证。授权,即authorization,是指审核某用户对某个目录是否具备读写权限。这两者的配合作用,组成了SVN的整个账户管理体系。

SVN权限控制上,有多种选择。一般来说,是采用Windows网域账户验证和SVN自身的权限管理。现简要介绍如下。

1 SVN自身权限的管理(basic 访问控制)

a) 修改\conf\httpd.conf 的 模块,设定如下

DAV svn

SVNParentPath D:/svn

AuthName "Lota SVN repository"

AuthType Basic

AuthzSVNAccessFile "d:/svn/repository/conf/authz" # 授权文件

AuthUserFile passwd #密码文件

Require valid-user

Satisfy Any

其中,AuthzSVNAccessFile指定版本库访问策略,Require valid-use表示只有经过认证的用户才可以访问,AuthUserFile用来表示使用htpasswd创建的密码文件的位置。

如果想用不同的访问政策文件和密码文件控制不同的版本库,可以在httpd.conf中写多个模块,并用SVNPath指定各版本库的绝对路径。

b) 生成passwd文件。在cmd控制台中,切换到目录下,运行

bin\htpasswd –cm passwd 

bin\htpasswd –m passwd 

可在目录下找到passwd文件,-c 参数是创建文件的意思,只在首次使用,其他htpasswd 参数的意义如下图:

Usage:

        htpasswd [-cmdpsD] passwordfile username

        htpasswd -b[cmdpsD] passwordfile username password

        htpasswd -n[mdps] username

        htpasswd -nb[mdps] username password

 -c  Create a new file.  

 -n  Don't update file; display results on stdout.

 -m  Force MD5 encryption of the password (default).

 -d  Force CRYPT encryption of the password.

 -p  Do not encrypt the password (plaintext).

 -s  Force SHA encryption of the password.

 -b  Use the password from the command line rather than prom

 -D  Delete the specified user.

On Windows, NetWare and TPF systems the '-m' flag is used by

On all other systems, the '-p' flag will probably not work.

c) 配置版本库访问策略文件

AuthzSVNAccessFile 对应的文件就是控制版本库的访问策略(假设SVN版本库下面有trunk,branches,tags三个目录),如:

[groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

manager =user1,user2

dev = user3,user4

 [/]

*=r

[repository:/trunk]

@ manager =rw

@ dev =r

*=

[repository:/branches]

@ manager = rw

@ dev =rw

*=

[repository:/tags]

@ manager = rw

@ dev = rw

*=rw

小节名称中冒号前面的版本库名称不能轻易省略,省略则代表针对所有文件库。*代表所有用户,等号后面为空则表示没有权限。

在访问策略文件中,即可为单个用户定义访问权限,也可以为用户组定义访问权限。如例子中的[groups]目录。

d) 用户远程修改自己的SVN密码。管理员分配用户后,可以让用户自己远程修改密码。到站点下载Apache22Passwd.rar,将其中的passwd.cgipasswd.cgi.ini复制到cgi-bin目录下,然后修改passwd.cgi.ini中的auth_user_file路径,使其指向实际的AuthUserFile的全路径。

auth_user_file=C:\Program Files\Apache Software Foundation\Apache2.2\passwd

这样,用户就可以访问修改密码。


2 SSPI 认证访问控制(windows 网域认证)

a) SSPI认证方式是基于Apachemod_auth_sspi模块的,因此,首先需要下载mod_auth_sspi模块(注意有版本对应关系)。

b) 解压mode_auth_sspi压缩包,将\bin目录下的mod_auth_sspi.so复制到\modules下。

c) 编辑\conf\httpd.conf文件,在LoadModule模块下,加入下面配置

LoadModule sspi_auth_module modules/mod_auth_sspi.so

如果有下面auth_module这行,mod_auth_sspi需要放在其前面

LoadModule auth_module modules/mod_auth.so

d) 修改httpd.conf,设定如下

 DAV svn

 SVNParentPath d:/svn

 AuthName "Lota SVN Repository"

 AuthzSVNAccessFile "d:/svn/repository/conf/authz"

 Require valid-user

 Satisfy Any 

# The following is SSPI authentication setting

AuthType SSPI

SSPIAuth On

SSPIAuthoritative On

SSPIDomain ltass.lota.com

SSPIOfferBasic On 

 

e) 设置访问授权

Basic授权方式类似,在[Groups]下添加域内的用户,然后再给予授权。例子如下:

[groups]

 manager = huangqx

 dev = zhangt,huangqx

[/] # 表示可以访问版本库下所有文件

@ manager= rw



3 权限控制的一些说明


从上述分析可以看出,要实现SVN的权限控制,首先得确定版本库的布局,在SVN中,可以针对每一个版本库设置不同的访问策略。并通过对用户进行分组,然后对每个用户组进行基于路径粒度权限的授权。

实际应用中,常常要设置默认的访问权限。在SVN1.5中,如果对一个目录没有设置访问控制,则默认拥有父目录权限的用户可以进行访问。

同时,SVN的权限具有继承性,也就是说,有父目录权限的用户也可以访问子目录,当然,前提是子目录设置了默认的访问策略。

十、配置邮件通知


1安装ActivePerl


ActivePerl官网下载ActivePerl,一路Next即可。安装后,查看是否已经设置了环境变量,如果没有,则添加Path=C:\Perl\bin;C:\Perl\site\bin


2安装nmake


复制nmake15.exeWindows\system32目录下,同时改名为nmake.exe。在cmd 控制台上输入nmake可测试是否安装成功。


3安装Module::Build


解压Module-Build-0.31.tar.gz,并在cmd控制台上cd到解压后的目录,依次运行一下命令

Perl Build.PL

Build

Build test

Build install


4安装Authen::SASL


解压Authen-SASL-2.10.tar.gz,在cmd控制台上,cd到解压后的目录,依次运行以下命令。

Perl Makefile.pl

Nmake test

nmake install


5安装Net::SMTP_auth


解压Net-SMTP_auth-0.08.tar.gz,在cmd控制台上,cd到解压后的目录,依次运行以下命令。

Perl Makefile.pl

Nmake test

nmake install


6安装SVN::Notify


解压SVN-Notify-2.78.tar.gz,在cmd控制台上,cd到解压后的目录,依次运行以下命令。

Perl Build.pl

Build

Build test

Build install

安装完后,在cmd控制台上输入svnnotify测试是否安装成功。


7、配置邮件自动通知

SVN配置邮件自动通知的功能是利用“钩子”来实现的。加入版本库在D:\SVN,进入我们所建立的版本库,在hooks文件夹找到post-commit.tmpl,并复制为post-commit.bat,对其进行编辑,去掉最后几行的配置,并添加以下内容

set REPOS=%1

set REV=%2

SET PATH=C:\PERL\SITE\BIN;C:\Program Files\Subversion\bin;C:\PERL\BIN;

SET OS=Windows_NT

SET SystemRoot=C:\WINDOWS

svnnotify --repos-path %REPOS% -r %REV% --to myname@company.com --smtp 192.168.30.20 --from myname@company.com -c GBK -H HTML::ColorDiff -d -c GBK

其中to 选项是接收邮件的人,可以是单个用户,也可以是邮件组。


阅读(3443) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~