您当前的位置:首页 > 计算机论文>计算机应用论文

Linux SVN服务器权限精确控制的实现

2015-09-28 08:45 来源:学术参考网 作者:未知

摘 要:为了实现文档及源代码等的有效存储与管理,本文选取目前流行的Subversion(简称SVN)对存储资源进行版本控制。本SVN服务器借助Apache的运行方式在Linux平台下架设,并实现了对SVN库权限的精确控制。

关键词:Subversion;版本控制;SVN权限控制
1.SVN简介
  Subversion,简称SVN,是一个开放源代码的版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。Subversion项目最初由CollabNet于2000年发起,并于2010年1月,正式成为Apache软件基金会的一个顶级项目。
  Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作,从而大大提高团队开发的效率。
2.架设apache web服务器
(1) 准备好安装源码目录:
  Apache web服务器的最新版本可以在http://httpd.apache.org/download.cgi下载得到。这里选用最新的稳定源码包版本2.2.19版。下载完后使用以下命令解压得到Apache源码目录:
  tar jxvf httpd-2.2.19.tar.bz2
(2) 配置Apache:
进入解压后的源码目录,并执行以下命令配置Apache web服务器:
  ./configure --prefix=/opt/apache2 --enable-mods-shared=all --enable-dav --enable-dav-fs --enable-so
  配置的参数解释如下:
  --prefix是指定安装到哪个目录,这里把apache安装到/opt/apache2目录下。
  --enable-mods-shared=all是指定编译用共享模块的方式编译apache,启用所有的动态共享模块。
  --enable-dav和--enable-dav-fs是SVN需要的参数,为把apache和SVN配合起来工作,必须加上这两个参数。启用webdav协议处理,启用DAV文件系统提供者。
  --enable-so是启用动态共享库。
(3) make  编译Apache web服务器
(4) make install  安装Apache web服务器
(5) 启动Apache web服务器
  用如下命令启动Apache服务器:
  /opt/apache2/bin/apachectl start
  如果一切正常,在客户端通过网页浏览器即可成功访问此Apache服务器。
3.架设Subversion服务器
(1) 准备好安装源码目录:
  Subversion服务器的最新版本可以在http://subversion.apache.org/download/下载得到。这里选用最新的稳定源码包版本1.6.17版。下载完后使用以下命令解压得到Subversion的源码目录:
  tar jxvf subversion-1.6.17.tar.bz2
  解压之后,会在当前目录生成Sbversion的源码包subversion-1.6.17文件夹。
(2) 配置Subversion:
进入解压后的源码目录,并执行以下命令配置Subversion服务器:
  ./configure --prefix=/opt/subversion --with-apxs=/opt/apache2/bin/apxs
  --with-apr=/opt/apache2/ --with-apr-util=/opt/apache2
  配置的参数解释如下:
  --prefix是指定安装到哪个目录,这里把Subversion安装到/opt/subversion目录下。
  --with-apxs让SVN和apache结合,作为apache服务器的一个模块。
  --with-apr和--with-apr-util  是指定apr和apr-util所在的目录,这里APR和APR-UTIL是被安装在/opt/apache2目录下。
(3) make  编译SVN服务器
(4) make install  安装SVN服务器
  成功安装svn后会在/opt/apache2/conf/httpd.conf 中自动加上以下两句:
  LoadModule dav_svn_module modules/mod_dav_svn.so
  LoadModule authz_svn_module modules/mod_authz_svn.so
  这样,启动apache web服务器时,svn服务会以apache模块的方式一起启动。
(5) 配置SVN服务器
  在/opt/apache2/conf/httpd.conf文件末尾加入如下location段:

DAV svn
SVNParentPath /data/svn  ---------------------SVN库的存放路径
SVNListParentPath on  ---------------------------允许查看SVN库目录列表
AuthType Basic    -------------------------------------采用基本认证类型
AuthName ""BHBH Subversion.repository""-----------登录窗口的提示信息
AuthzSVNAccessFile /etc/svn.access  ---------------指定权限配置文件
AuthUserFile /data/svn/authfile  ----------------------指定用户认证文件
Require valid-user  ------------------------------------强制使用身份验证

RedirectMatch ^(/svn)$ $1/------------------------------使url的/svn转义成/svn/
(6) 创建SVN库
  依照上面配置文件中的设定,先用如下命令创建SVN服务器存放数据库的文件夹:
  mkdir -p /data/svn
  再用以下命令创建3个库分别用于硬件组(HW)、软件组(SW)、测试组(TEST)三个部门存储数据。
  svnadmin create --fs-type fsfs /data/svn/HW
  svnadmin create --fs-type fsfs /data/svn/SW
  svnadmin create --fs-type fsfs /data/svn/TEST
  注意库目录的权限设置,要确保每个库目录下的db子目录的所有文件可读写。下面是以HW库为例的设置方法,其余库类似。
  chmod -R 777 /data/svn/HW/db
(7) 添加SVN用户
  以下命令可以添加一个可访问svn服务器的用户,如硬件组的一个员工hw1,并把此用户的信息存储到/data/svn/authfile认证文件中:
  htpasswd -c /data/svn/authfile hw1
  按提示设置好hw1的svn服务器访问密码后,若要再添加其它用户,如添加硬件组的另一个员工hw2,可用下面的命令:
  cd /data/svn
  htpasswd authfile hw2
  添加其他用户方法同上。这里设定添加了软件组的sw1和sw2,测试组的test1和test2四位员工,并添加了两位公司经理admin1和admin2,下面详述对各个用户访问SVN服务器的权限的精确控制方法。
4. SVN服务器访问权限的精确控制
  通过设置访问控制文件/etc/svn.access可以实现各个用户访问SVN服务器的权限的精确控制。
  编辑/etc/svn.access文件内容如下:

* =
@test = rw
@admin = r
  用户访问SVN服务器某个库时,SVN服务器会按此权限配置文件里相应库逐行验证用户的权限。通常第一行*= 先把所有用户的权限 取消,避免权限设定的混乱。然后SVN服务器会继续检查后面是否有设定此用户的权限。若有,则按后面的设定赋予此用户具体的权限。
  以上设置中,先在groups里设置好用户所属分组。比如上面把hw1和hw2两个用户设置为hw组,然后通过@hw就可以设定这两个用户的权限。@hw=rw表示hw1和hw2用户对SVN的HW库有读写权限。而通常公司经理只是对项目进度和质量进行审查,一般不参与项目的研发。为严格实现权限控制,避免误操作,这里通过@admin=r给公司经理设定了只读权限。
  这样,就能实现每个研发部门的研发成员对本组的SVN库目录有读写权限,而不能随意访问其他组的资源。另外,公司经理对所有组的资源都有只读权限,方便审查项目的进展和质量。
参考文献:
[1] (美)皮拉拖,(美)苏斯曼,(美)费泽帕特里克著.使用subversion进行版本控制(影印版)[M].北京:开明出版社.2009:14-17.
[2] (美)梅森(Mason,M.)著,陶文 译.版本控制之道:使用Subversion(第2版)[M].北京:电子工业出版社[M].2007:50-52.
[3] 徐德民.操作系统原理Linux篇[M].北京:国防工业出版社,2004:18-20.
[4] 顾鹏,刘立刚,谢长生.数据存储系统备份技术研究与分析[J].计算机安全,2003,(6):32-35.
[5] 张韫福,陈曙晖,赵振宇.Linux网络应用技术[M].长沙:国防科学技术大学,1999:44-45.",##隔###

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页