配置svn服务器.doc_第1页
配置svn服务器.doc_第2页
配置svn服务器.doc_第3页
配置svn服务器.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

三、配置SVN服务器 如果你对我们如何配置SVN的服务器,以及它的权限管理如何设置感兴趣,欢迎你阅读下面的部分,这里仅仅对第一节当中阐述的svn+ssh,且使用密钥对认证的方式进行说明。希望我们以后有更多的同学可以承担服务器的维护工作。这里我们假设你已经比较熟悉Linux上的一些基本操作,否则的话请去补习一下 _ 1、创建独立的svn版本库属主,也就是前面提到过的svnowner。我们希望svnowner自己是一个独立的用户,同时也独立成组,这样可以避免不必要的外人干扰。以下的操作除非特别说明,均使用svnowner用户进行操作。 2、以svnowner用户的身份创建版本库。首先使用umask 027的方式设置掩码值,使得之后创建的文件和目录对本组用户只有读权限,组外用户无权限。如果考虑更严格的权限控制,可以使用umask 077方式,仅允许svnowner用户自己访问,拒绝本组、组外用户的任何访问。接着用svnadmin create path_for_repository在path_for_repository路径上创建版本库。从便利和权限一致性的角度,建议把svn、svnserve、svnadmin、svnlook等svn工具改名为real_svnxxx,再创建svn等脚本程序,例如svn脚本可以这样编写:#!/bin/bashumask 027/usr/bin/real_svn “$” 3、创建SSH公钥存放文件。在svnowner用户目录下创建.ssh目录,并在其下创建authorized_keys文件,目录和文件的都应当仅仅是本用户可读写的。将各用户发送给你的公钥添加到authorized_keys文件当中,注意:一行一个公钥,并在公钥前增加option字段,例如:command=/home/svnowner/svnserve -t -r path_for_repository tunnel-user=svnuser1, no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa .(RSA Key here).user1 上例当中,用户user1使用该密钥对认证之后将会执行/home/svnowner下的svnserve,显然这应当是一个包含设置umask的脚本,并且以path_for_repository 作为版本库的根,svnserve运行于tunnel模式下,使用的svn用户名是svnuser1。再次提醒大家的是以上内容需要在authorized_keys里面一行内写完。 4、现在可以在版本库里面设置具体的svnuser的权限了。进入之前所创建的path_for_repository目录,在其中有conf目录,是负责配置版本库的设置的。找到svnserve.conf文件,在其中去掉注释并修改的行有:anon-access = noneauth-access = writeauthz-db = authzrealm = XXX Group Repository 表明匿名用户无访问权限,认证用户可以具备写权限,版本库标识为“XXX Group Repository”(此项可选),权限认证数据库是authz文件。于是再修改authz文件,示例:groupsmanager = svnuser1members = svnuser2, svnuser3/manager = rw* = r/srcmembers = rmanager = rw* = /src/arm7svnuser2 = rwmanager = rwsvnuser3 = r* =/src/arm9svnuser3 = rwmanager = rwsvnuser2 = r* =/sharedmembers = rw 以上示例的目的是将所有的目录置于manager可读写的方式,members用户可以对src目录具有可读权限,svnuser2和svnuser3分别对src/下的ARM7、ARM9目录具有读写权限,三个用户均可以对/shared目录进行读写。匿名用户(其他用户)只能对/shared目录进行读操作。注意:目录路径均以path_for_repository作为根目录,这一点需要牢记。 SVN 的一个明显的优点是可以针对单个目录具备独立的控制权限,这是比cvs更灵活的方面。并且,这也很适宜在团队这样的大范围内推广、且具有可控保密措施的实施方案。更详细的一个权限示例建议大家参考由“郑新星”所写的Subversion之路实现精细的目录访问权限控制。 至此,Subversion服务器的搭建工作完毕,管理员的后续维护工作包括接受组内用户密钥对的更改、删除,为Subversion作定期备份等等。本文也暂告一段落独立运行的Subversion权限设置很简单,首先打开snvserve.conf,去掉下面一行的注释authz-db = authz然后打开同一目录下的authz这个文件,这个文件便是整个权限控制的核心,先来看一个例子:groupsdev-group = liudong,xfliangdesign-group = newidea/dev-group = rwdesign-group = r* =/docdesign-group = rw/webappdesign-group = rw接下来我给大家解释一下这个文件,相信就可以明白Subversion如何来做权限控制的了。首先我定义了两个组,一个开发组(dev-group),一个设计组(design-group),接下来我让dev-group对整个目录有读写的权限,而design-group只有读权限。但是接下来的两个子目录design-group就有读写权限,也就是说设计组可以读取整个项目,但只能修改doc以及webapp这两个子目录。*= 这行表示其他人不能读写。当然也可以直接指定某个用户,例如我想让liudong这个用户可以读写webapp目录,那设置如下:/webappdesign-group = rwliudong = rw另外有一点注意的是,修改这个文件不需要重新启动svn服务,这点太棒了。下面是详细的说明Subversion自带的authz样例中的注释# This file is an example authorization file for svnserve.# Its format is identical to that of mod_authz_svn authorization# files.# As shown below each section defines authorizations for the path and# (optional) repository specified by the section name.# The authorizations follow. An authorization line can refer to a# single user, to a group of users defined in a special groups# section, or to anyone using the * wildcard. Each definition can# grant read (r) access, read-write (rw) access, or no access# ().svn权限设置小结及“无权打开根进行编辑操作”的解决 如果不允许匿名用户访问,设置 在svnserve.conf中进行了这样的设置: anon-access = none auth-access = write 如果,anon-access = read,需要在在authz文件中加上: / * = r 否则在使用SVN进行Checkout时出现错误提示:无权打开根进行编辑操作。 1. svnserve支持面向目录的访问控制了; 2. 权限具备继承性,所以需要用* = 的形式来禁止未授权的用户访问特定子目录; 3. svn 1.3.2及以后的版本允许对子目录进行操作而无需父目录的读权限; 4. 如果是中文目录的话,authz必须以utf-8的格式保存,且不能带BOM,而windows自带的记事本按utf-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论