您的位置:软件测试 > 开源软件测试 > 开源配置管理工具 > SVN
建立一个安全的Subversion服务器
作者:网络转载 发布时间:[ 2013/1/30 13:59:48 ] 推荐标签:

  近一个客户聘请了一个网络开发团队来帮助他的工作过度的网管。他们要求我安装一个版本控制系统,这个系统能够保证团队中的任何成员避免无意中修改别人的文件,并且能够给予管理员恢复文件到任何版本的机制。
  
  我的第一个想法是Subversion。因为它是我写BSD Hacks 时和编辑器一起用的版本控制系统。在Ports Collection中搜索一下之后发现,Subversion需要好几个相关的port。比如,esvn看起来相当适合客户端,因为它的GUI界面能够运行在Unix,Mac OS X以及Windows中。对于一个对Unix技术掌握不深的网络开发团队而言,当他们需要把数据存贮在FreeBSD服务器上而从非FreeBSD系统读取时,esvn是非常好的选择。
  
  前期准备
  
  在我的想法中,只允许开发团队的成员具有权限访问仓库是非常重要的。同时,我们把仓库放在和目前的web服务器分开的操作系统上,当web管理员看到适合的文件时,由他负责把文件从仓库复制到web服务器上。
  
  为了实现这个目的,先对已存在的你想放到版本控制系统下的目录结构做一个备份,然后把它安全发送到仓库服务器。在我的例子中,我把web服务器上www目录的数据备份到一台内网服务器
  192.168.2.2上。
  
  # tar czvf - /usr/local/etc/www/data | ssh dru@192.168.2.2 "cat > www.tar.gz"
  
  下一步是在仓库服务器上建立一个svn组,并把已存在的需要访问仓库的用户加到这个组中。比如,当我创建svn组后,我在/etc/group加入这句话把已存在的web管理员用户加进去:
  
  # vi /etc/group
  svn:*:3690:webadmin
  
  然后,新建一个用户svn。如果有必要,你还需创建所有要访问仓库系统的用户帐号(如果他们还没有创建)。要保证每个用户是svn的成员并且有密码和可用的shell。我使用sysinstall为新的网络工程师建立用户帐号。完成以后,我双击svn组的成员。大概像这样:
  
  # grep svn /etc/group
  svn:*:3690:webadmin,devel1,devel2
  
  处理 umask在安装Subversion之前,我们先看看svn用户的umask。在我的FreeBSD系统上,它是这样的:
  # su -l svn
  % umask
  022
  
  在UNIX中,用户umask值决定了新建目录或文件的默认权限。这是通过关闭某些权限达到的。如果你记得:
  r = 4
  w = 2
  x = 1
  
  你应该看得出这个umask没有对用户(svn)关闭任何权限(0);它对组(svn)关闭了写权限(2);它对其他组用户关闭了写权限(2)。
  
  因为svn组的成员必须能够写入仓库,所以把umask中关于组的 2 改为 0。甚至如果你不想让其他组成员知道这个仓库的存在,你可以把关于其他组成员的 2 改为 7。
  
  修改用户svn的shell配置比较简单。如果用户使用 csh:
  % vi ~svn/.cshrc
  ,那么找到umask那行并把它改为 002 或 007。如果你的svn用户不用csh,修改你的shell配置文件。如果你把你的修改保存在 ~svn/.cshrc (或别的地方),别忘了告诉shell:
  % source ~svn/.cshrc
  
  再敲一次 umask 命令,以保证你的修改有效。
  
  安装Subversion ,并让它拥有正确的umask
  
  如果你选择一个002的umask,那么当你从ports collection生成Subversion的时候,你能把一个wrapper编译进去。如果你选择一个007的umask或安装已预编译好的Subversion,那要创建一个wrapper脚本来保证你的Subversion二进制文件使用你的umask值。
  
  使用wrapper编译,使其umask值为002:
  # cd /usr/ports/devel/subversion
  # make -DWITH_SVNSERVE_WRAPPER install clean
  
  或者,你可以安装已预编译的二进制代码包
  # pkg_add -r subversion
  
  注意:无论使用何种方法,安装之前都应该把这篇文章看完!因为你可以发现一些额外的让你感兴趣的编译选项!
  
  如果你不在wrapper中编译,请移动你的代码到相应的位置,并创建你自己的wrapper脚本:
  # mv /usr/local/bin/svn /usr/local/bin/svn.orig# vi /usr/local/bin/svn#!/bin/sh#wrapper script to set umask to 007 on subversion binariesumask 007/usr/local/bin/svn.orig "$@"
  
  设置你的umask值为002或007,使它和syn用户的umask值一样。别忘了设置你的wrapper脚本为可执行的:
  # chmod +x /usr/local/bin/svn

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd