当前位置:文档之家› svnserve权限设置

svnserve权限设置

Svnserve单项目权限设置目录Svnserve单项目权限设置 (1)目录 (1)前言 (1)一项目结构 (2)二建立版本库 (4)三配置权限 (4)四导入项目版本库 (9)五启动svnserve (13)六将svnserve设置为系统服务 (14)1,安装svnservice (14)2,删除服务 (15)3,配置服务是自动启动 (15)致谢 (16)前言目前网络上有很多的关于svn安装与权限设置的文章(基于SVN自带的svnserve),但是如果您像我一样按照那些文章来进行我们的subversion的安装和设置会发现有很多问题,可以说每篇文章都有这样或那样的错误。

或者断章取义,或者根本就没亲自验证就写出来,贴到网络上,然后又有很多人直接转帖到自己的博客,空间中。

这就造成了网络上大量的权限设置文章根本是无法正确设置权限的。

在学习那些“权限设置精细”文章的过程中,给我们的身心都造成了严重的伤害。

至少给我幼小的心灵造成了创伤。

每次上网搜到一篇文章都觉得这次总该可以了吧,结果全盘照抄了,还是不行。

累的我真的想放弃了。

还好后来有一篇文章给了我启发,那是我找过的唯一一篇有我需要的细节的文章。

这篇文章是专门写给像我一样的菜鸟,而又因为这样或那样的原因需要了解svnserve权限设置的人,也就是“侏儒”。

如果您对windows 比较了解,也就是身高在1.5米以上的,偏矮的人,正常人,比较高的人,非常高的人,或者像姚明一样的巨人的话,那你会发现此篇文章极尽啰嗦,繁琐。

对此我深表歉意!一项目结构亿联网络技术有限公司是一家专注于网络通讯产品的研发及销售的高科技企业。

目前,公司主要致力于V oIP网关、V oIP终端、WIFI 和IP-PBX等网络通讯产品的开发、生产和销售。

产品以出口为导向,95%产品远销英国、德国、美国、韩国等50多个国家与地区,拥有一批诸如Nortel、FranceTelecom, Skype等优质合作伙伴资料库的目录结构如下:ref 项目名称├─department 存放每个部门资料│ ├─hardware 硬件资料目录│ ├─embedded 嵌入式资料目录│ └─PC PC软件资料目录├─com 研发部均可读的公共资料└─temp 临时文件人员情况与权限需求分析:Stonelu,公司副总,研发中心最大的“官”,毫无疑问当然需要访问所有的目录了,虽然可能他不太有时间查看那些个资料,但是权限还是得给人家设在那的嘛,谁叫人家是老大呢。

Nancy,项目经理,研发中心的第二把交椅,访问所有目录,查看项目进度也是理所当然的,对整个资料库具有读写权限。

wxz,硬件部经理,需要对硬件部目录有读写权限。

Ly,硬件部职员,对硬件部资料可读写。

wwt,嵌入式经理,对嵌入式可读写。

tjy,嵌入式员工,对嵌入式资料可读写。

azm,PC部经理,对PC资料库可读写。

ljp,PC部员工,对PC部可读写。

Com文件夹下的文件,nancy可读写,其余员工可读。

Temp文件夹下的文件,全体员工可读写。

二建立版本库在服务器D盘目录下(也可在本机,并且盘符可自由选择),新建svn文件夹,再在svn下新建ref文件夹。

(文件夹名称可自行设定)然后,创建版本库:第一种方式:在DOS命令行中运行svnadmin create D:\svn\ref第二种方式:鼠标右键单击ref,选择[TotoiseSVN]->[在此创建版本库...]进行创建,默认“本地文件系统(FSFS)”,点击确定,完成创建。

三配置权限编辑版本库D:\svn\ref\conf\svnserve.conf文件,如下:[general]anon-access = none #保证只有认证用户可以访问,即关闭匿名访问auth-access = write #通过认证的使用权限password-db = passwd #指定了用户密码文件authz-db = authz #指定了授权文件realm = ref #客户端凭证缓存编辑版本库D:\svn\ref\conf\passwd文件,如下:[users]stonelu = stonelu # ”=”前为帐号,后为密码nancy = nancywxz = wxzly = lywwt = wwttjy = tjyazm = azmljp = ljp编辑版本库D:\svn\ref\conf\authz文件,授权如下:[groups]g_vip = stonelug_manager = nancyg_hardware = wxz,lyg_embedded = wwt, tjyg_pc = azm,ljpg_common = stonelu,wxz,ly,wwt,tjy,azm,ljp[/] #根目录的权限* = #全体员工对根目录无权限@g_manager = rw #项目经理对根目录具有读写权限@g_vip = r[/ref/]@g_manager = rw@g_vip =r* =[/ref/department/hardware]@g_manager = rw@g_hardware = rw@g_vip = r* =#可加可不加,因为不显示设定权限,即表示没权限[/ref/department/embedded]@g_manager = rw@g_embedded = rw@g_vip = r[/ref/department/pc]@g_manager = rw@g_pc = rw@g_vip = r[/ref/com]@g_manager = rw@g_common = r[/ref/temp]@g_manager = rw@g_common = rw附:1. #号表示注释。

以上每个文件夹权限设置中对每个组与用户的权限设置顺序可调换,如:根目录的设置也可以写成:[/]@g_manager = rw@g_vip = r* =2.文件夹权限具有向后继承,但不具有向前效应。

简言之就是权限具备继承性,任何子目录,均可继承其父目录的所有权限,除非它自己已被明确设置了其他的权限。

如本例:为g_manager设置了根目录“[/]”的读写权限,则根目录下的文件g_manager均具有读写权限。

但是在该目录的下一级目录,如:“[/ref/]”为其他用户设置了权限,把默认访问权限设为了可读,(在根目录,默认是不可访问)必须也加上g_manager = rw,否则g_manager在“[/ref/]”中跟其他用户一样也是可读权限。

3. 我们发现wwt这个帐号同时存在“g_embedded”和“g_common”两个分组里面,这是因为 svnserve.exe 允许我们这样设置。

4. [/ref/] 表示这个目录结构的相对根节点,或者说是ref资料库的根目录。

设置权限时“@”表示组名,设置的是整个组的权限,如果该组只有一个用户,则可将“@组名”替换为“用户名”如:你可以将“@g_manager = rw”替换为“nancy = rw”。

5. 如果设置了可读写权限,则在稍后的操作中,我们可以从版本库更新我们的工作拷贝,也可以提交修改;如果设置了可读权限,则只有更新工作拷贝,不能提交修改,如果您提交了,将会得到“Access deny”警告,也就是禁止提交修改。

6. 如果一个目录下有多库,则文件夹目录写法有点不一样。

如本例中的[/ref/],应该改写为[ref:/]。

但是要是您也是像本例这样只想创建单库单项目的话,则按上面的操作即可。

7.如果像本例这样的单库单项目也照网络上大多数的文章那样,把目录写成[ref:/],则会造成严重的权限问题。

主要的问题有:1. 如果根目录没设可读权限,则对所有文件都没可读权限.2. 而如果对根目录设置了可读权限,则对根目录下的所有文件都具有了可读权限。

这样就造成了普通员工的权限只有两种可能:要不对所有文件都没有权限;(这肯定不是我们要的)要不就对整个项目库具有可读权限。

(造成严重的安全漏洞,毕竟某些关键内容,我们并不希望太多人看到)本人在设置权限时就因这个问题而浪费了很多时间,伤透了脑筋。

四导入项目版本库在本机D:\temp目录下,建立好上述资料库的目录结构,鼠标右键单击temp,选择[TotoiseSVN]->导入,如下图所示:弹出对话框:1. 版本库在本机上安装,并且假设你电脑的IP地址为:192.168.0.125(当然这个是我在公司的IP地址),则在“版本库URL:”中输入“svn://localhost/ref”或“svn://192.168.0.125/ref”等效。

2. 版本库在服务器上安装:假设服务器的IP地址为:192.168.1.2,则在地址栏中输入:svn://192.168.1.2/ref 。

在“最新信息”里,可依您的兴趣填写,你可写您喜欢的女孩的名字,如果刚好是您心情郁闷时,也可写”F”开头的英文词。

当然如果是直接拿来版本控制,则最好填写”import”之类比较切合实际的词组或语句。

如下图:此时你可以打开IE或文件夹,在地址栏中输入下面的任意一个:①svn://192.168.0.125/ref②svn://127.0.0.1/ref ③svn://localhost/ref 此时你可以打开IE或资源管理器的地址栏,甚至运行中输入上述三种方式之一,即可打开如下对话框:输入用户名和密码,可勾上“保存认证”,免去每次输密码的麻烦,得到如下对话框:上图是对ref目录有权限的用户显示出来的结果,如果您对ref目录没有可读权限,则结果不一样。

如:您输入的用户是ljp,则显示如下:说明ljp对ref没有可读权限。

当然了,ljp用户对ref/department/pc下的文件是有权限的,我们可在上图的URL中的ref后面加上/department/pc,或者关闭上图,在地址栏中输入:svn://127.0.0.1/ref/department/pc再输入密码,显示如下:我们可在“pc”点右键,选择“创建文件夹”,输入文件名“test”,可以看到test文件夹已添加到pc下面。

刚好也验证了我们设置的权限是正确的。

Ljp能对pc下的文件进行读写操作。

五启动svnserve打开“开始->运行”输入“cmd”,打开命令行窗口,输入:svnserve –d –r D:\svn\ref,即可启动svnserve。

注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。

这样每次开机都得手动启动服务。

“那有没有更好的办法呢?”(好白痴的问题)。

如果想省去每次开机都得自己手动启动svnserve的麻烦,我们可以把它设为系统服务。

六将svnserve设置为系统服务1,安装svnservice在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server)本身包含了一个安装服务的工具,叫做"Service Control",也就是sc.exe。

相关主题