关于如何安装Subversion以及与Apache集成的问题,请参看《集成Subversion与Apache》,本文是在此基础上对安全作一些设置。
1 准备
在安装之前,首先检查一下,httpd.conf中是否加载了必须的组件。LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so以及相关的版本库的配置:
如果是这样配置的,那么默认情况下,此版本库对全世界都是可以“匿名”访问的,换句话说,任何人可以使用Subversion客户端从版本库URL取出一个工作拷贝(或是它的子目录),任何人可以在浏览器输入版本库URL交互浏览的方式来查看版本库的最新修订版本,并且可以提交到版本库。这样当然不好,需要配置一些认证授权策略,来阻止非法人员的进入和更好的跟踪管理版本库。DAV svn SVNParentPath C:\svn
2 配置
2.1) 认证选项
Apache提供了两种认证选项。 1) 基本HTTP认证 最简单的客户端认证方式是通过HTTP基本认证机制,简单的使用用户名和密码来验证用户的身份,Apache提供了一个htpasswd工具来管理可接受的用户名和密码,也就是希望赋予Subversion特别权限的用户,首先需要将他们添加到密码文件。 我们先了解一下htpasswd工具的使用,该工具在Apache的安装目录下的bin中。
>cd C:\Program Files\Apache Group\Apache2\bin
>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 prompting for it.
-D Delete the specified user.
On Windows, NetWare and TPF systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.
选项c是创建新文件,如果是第一次使用或文件不存在,则打开此选项。选项m是使用MD5加密密码,s是使用SHA来加密,D则是删除某个用户。了解用法之后,开始创建密码文件。这里以rain用户为例,密码文件存放在C:\svn\auth\svn-auth.conf中。
>htpasswd -cm /svn/auth/svn-auth.conf rain New password: **** Re-type new password: **** Adding password for user rain接下来,我们需要在httpd.conf的Location里添加一些指示来告诉Apache如何来使用这些密码文件。
到这一步,并没有完成,Apache只是知道当需要授权时需要向客户端索取用户名和密码,而并没有告诉它什么样的客户端需要授权。最简单的方式是保护所有的请求,添加Require valid-user告诉Apache任何请求都需要认证。DAV svn SVNParentPath C:\svn AuthType Basic AuthName "Subversion repository" AuthUserFile C:\svn\auth\svn-auth.conf
2) SSL证书管理 关于SSL的配置,请参看Apache文档或者其他书籍。DAV svn SVNParentPath C:\svn AuthType Basic AuthName "Subversion repository" AuthUserFile C:\svn\auth\svn-auth.conf Require valid-user
2.2) 授权选项
在C:\svn\auth下建立文件svn-access.conf。文件内容大体如下格式:[repos-name:path] user = r|w|rwr为只读,w为只写,rw则为可读可写。 如果你想混合认证/匿名访问,则可以这样配置:
在svn-access.conf配置如下:DAV svn SVNListParentPath on SVNParentPath C:\svn AuthzSVNAccessFile C:\svn\auth\svn-access.conf Satisfy Any Require valid-user AuthType Basic AuthName "Subversion repository" AuthUserFile C:\svn\auth\svn-auth.conf
[/] * = r [/] rain = rw [rose:/branches/BR_1] michael = r对于上面的配置,则说明了对于所有用户默认是可读的,rain用户可以读写所有目录,而michael对于rose目录下的branches/BR_1子目录只具有只读权限。对于实际项目,可以做相应修改。
3 参看资料
1) http://subversion.tigris.org 2) http://svnbook.red-bean.com/
2007-6-24 18:16:3
Posted in
Tags:
Comments: 


