svn用户权限管理
svn用户权限管理

SVN用户权限管理讲解/***********************************************************///SVNSubversion 用户权限管理//资料来源:网络、总结//2010年7月20日/***********************************************************/ 基本的操作:以我创建的Svn工程为例子来讲解SVN权/***********************************************************/ //SVNSubversion 用户权限管理//资料来源:网络、总结//2010年7月20日/***********************************************************/基本的操作:以我创建的Svn工程为例子来讲解SVN权限管理的配置仓库创建路径:D:\SVNLibrary>>>取消匿名登陆:打开文件D:\SVNLibrary\conf\svnserve.conf找到:###anon-access = read将前面的注释去掉,并将read 改为:none即使:anoe-access=none 表示匿名登陆下的用户权限为空。
即:系统不支持匿名登陆说明:auth-access = write #通过验证的用户可以读和写auno-access = read #匿名登陆下可以只读文件,即:文件修改后无法提交到服务器password-db =password #用户保存文件的名称authz-db =authz #权限管理文件这个是非常重要的,如果我们要对整个工程的文件进行权限分配的时候,就必须将这个行文件前面注释掉,否咋即使我们在权限配置文件里面进行再多的配置都是无效的。
这点我已经犯错了。
然后我们在authz 文件下面进行权限的分配在权限分配的时候要注意的问题:>>>权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。
svn的权限管理与设置

Win7 系统搭建SVN 服务端和客户端图文使用方法1、安装好VisualSVN Server后,运行VisualSVN Server Manger,打开服务器的 VisualSVN 界面:2、创建仓库(repository)第一种方式:按照上图,创建新的代码库,在下图所示的文本框中输入代码名称:上图中选择“empty repostory”,则在代码库只创建空的代码库StartKit,选下面的“single-project”则在代码库StartKit下面会创建trunk、branches、tags三个子目录;3种仓库默认推荐权限设置(Nobody…不允许任何人访问All Subversion users…所有svn用户都可以Customize permissions自定义权限允许,这里下面有个按钮,我们可以过会继续设置,当然你也可以在这里设置,然后点create创建)这里有个Repository URL这个地址就是客户端获取服务器代码的地址,你可以先记下来,也可以通过右击仓库名可以获得。
前面的WIN-TV..什么的是你计算机的名字,客户端都是服务器的ip地址就行了这就是标准的branches,tags,trunk服务器版本我们现在右击整个仓库,就是MyBlog项目,我们现在来创建一个admin管理员,用户名admin,密码admin,你可以在Users查找到他,可直接修改密码点击“OK”创建完代码库后,没有任何内容在里面。
我会在这个教程的第二部分说明如何迁入源代码。
下面,我们开始安全性设置,在左侧的Users上点击右键:输入上面的信息,点击OK,我们就创建一个用户了。
按照上面的过程,分别添加用户Developer1、tester1、manager1,好了,我们开始添加这些用户到我们刚才创建的项目里:点击上图中的"Add..."按钮,在下图中选择我们刚才添加的用户,点击OK按钮:说明:大家可能注意到了下图中的Groups,是的,你也可以先创建组,把用户添加到各个组中,然后对组进行授权,操作比较简单,在此略过。
svn 开发过程常见问题与处理方法

SVN(Subversion)是一个开源的版本控制系统,被广泛用于代码管理和协作开发。
在软件开发过程中,SVN经常被用来管理代码的版本,协调多人同时开发,以及追踪代码的变更历史。
然而,由于开发过程中存在着各种复杂的情况和问题,有时候SVN的使用也会遇到一些常见的问题。
本文将从实际开发的角度出发,总结了SVN开发过程中常见的问题,并提出了一些解决方法供大家参考。
一、代码冲突在团队协作开发中,可能会出现多个开发者同时修改同一个文件的情况,导致代码冲突。
这时SVN会提示出现冲突,需要手动解决。
常见的解决方法有:1. 及时更新代码:在提交代码之前,先从SVN服务器更新最新的代码到本地,避免出现代码冲突。
2. 手动解决冲突:在出现冲突的文件中手动编辑代码,将冲突的部分修复后再重新提交。
二、意外删除文件有时候在清理代码的过程中,开发者不小心删除了某个重要的文件或目录,而没有在SVN上记录下来。
这时可以通过以下方法进行修复:1. 使用SVN恢复命令:可以使用命令行或者SVN客户端工具执行svn revert命令,将被意外删除的文件或目录还原为最新版本。
2. 查看SVN历史记录:可以通过SVN客户端工具或者命令行查看SVN服务器上对应文件的历史记录,并找回被删除的文件。
三、服务器连接问题在使用SVN时,有时会遇到无法连接服务器的问题,导致无法提交或更新代码。
这种情况下可以尝试以下解决方法:1. 检查网络连接:首先查看本地网络连接是否正常,对SVN服务器进行ping测试,确保网络连接畅通。
2. 检查SVN服务器配置:确认SVN服务器位置区域和端口是否正确,以及用户名和密码是否正确。
3. 联系系统管理员:如果以上方法无法解决问题,可以联系SVN服务器的系统管理员进行进一步排查和修复。
四、SVN性能问题随着代码量的增加和团队规模的扩大,SVN服务器可能会出现性能下降的情况。
为了提高SVN的性能,可以尝试以下方法:1. 定期清理历史记录:定期清理SVN服务器上过多的历史记录和无用的文件,可以通过SVN命令行工具执行svnadmin命令进行清理。
Linux下SVN部署安全及权限配置_实现web同步更新

Linux下SVN部署/安全及权限配置,实现web同步更新本文包含以下内容:SVN服务器安装SVN权限管理SVN使用SASL加密SVN上传时同步其它目录需求在WEB线上版本管理的基础上,能够在代码上传之后,立刻通过WEB访问,查看修改效果;同时,保证数据的安全性;SVN安装SVN服务器有2种运行方式:独立服务器和借助apache运行。
svnserve和apache相比是轻量级的,也比较简单,svnserve包含在subversion里面,所以只要安装了subversion就相当于安装了一个小型的svn服务器。
它使用自己的一套协议通信。
例如访问apache时使用http:// 前缀,而svnserve使用svn:// 前缀.这里介绍的是通过独立服务器方式运行,优点是简单小巧。
如果是支持较大规模的开发,还是推荐使用apache服务器方式;这里使用svnserver安装;1.首先为SVN单独创建一个用户,这样可以使用操作系统的安全特性;2.将svnadmin这个用户加入到sudu组;3.安装:sudo apt-get install subversion4.创建测试目录:mkdir /home/svnadmin/test5.创建版本库:svnadmin create /home/svnadmin/test4. 导入项目例如现在有个工程,名称为examPro,位置/alidata/www/examPro , 将这个工程导入到本地仓库中。
svn import /alidata/www/examPro file:///home/svnadmin/examPro -m "import examPro"在上一个例子里,将会拷贝目录examPro到版本库中;这样这个工程就在纳入服务器的本地仓库管理。
为了使用SVN的同步更新机制,我们需要在svn服务器环境上签出一份最新工程拷贝(为表述方便,这里称为A目录)。
配置管理-SVN权限详解

配置管理-SVN权限详解
转载⾃:
VisualSvn的权限类型分为4种:
1. Inherit from parent(Read/Write):权限和⽗节点的权限相同,左右的⼦节点默认权限;
2. No Access:没有任何权限,⽤户⽆法将⽂件下载到本地;
3. Read Only:只读,⽤户只能从服务器将⽂件下载到本地,⽆法将修改提交到服务器;
4. Read / Write:读写,⽤户可以从本地将修改提交到服务器。
权限设置问题说明:
l⽤户U在组G1和组G2中都有设置,同时对于同⼀个项⽬,G1和G2被安排的权限是不同的,此时⽤户U的权限是取2组中权限的较⼤值。
权限⼤⼩如下: Read / Write > Write Only > Read Only > No Access
⽤户U在组G1和组G2中都有设置,同时G1对⽗节点有权限设置,G2对⼦节点也有权限设置,但是设置的不同,这时U对⼦节点的操作的权限是根据G2的设置,⽽不管权限值的⼤⼩。
⽤户U在组G1和组G2中都有设置,G1和G2对⽗节点的权限设置是Ga和Gb,Ga>Gb那么U对⽗节点的操作权限是Ga,⽽如果G2⼜对⽗节点下的⼀个⼦节点⼜设置了权限Gb(看似多余的操作)此时U对⼦节点的操作权限即是Gb(如果不设置则仍是Ga)。
SVN管理规范

SVN管理规范一、引言版本控制是软件开辟过程中非常重要的一环,它可以匡助团队有效地协作、追踪代码变更、恢复历史版本等。
SVN(Subversion)是一款流行的开源版本控制系统,被广泛用于软件开辟项目中。
本文旨在制定一套SVN管理规范,以确保团队成员能够高效、规范地使用SVN进行版本控制。
二、SVN仓库结构1. 仓库的组织结构应根据项目的特点进行设计,普通情况下可按照模块、子项目或者功能进行划分。
2. 每一个项目应在仓库中创建一个独立的目录,并按照项目名称进行命名。
3. 在项目目录下,可以根据需要创建子目录,如分支(branches)、标签(tags)和主干(trunk)。
- 分支目录用于保存项目的不同分支,如功能开辟分支、修复分支等。
- 标签目录用于保存项目的发布版本,每一个标签应包含一个稳定的、可发布的版本。
- 主干目录用于保存项目的主要开辟代码,所有的开辟工作应在主干上进行。
三、SVN操作规范1. 提交待码- 在提交待码前,应先更新本地工作副本,确保与仓库中的最新版本保持一致。
- 每次提交应只包含一个逻辑上的更改,确保提交的代码具有单一性。
- 提交时,应提供故意义的提交消息,描述本次提交的目的和内容。
- 避免提交不必要的文件,如编译生成的文件、暂时文件等。
2. 分支管理- 在需要进行功能开辟或者修复时,应创建相应的分支,避免直接在主干上进行修改。
- 分支的命名应具有描述性,能够清晰表达分支的用途和目的。
- 分支的合并应在完成相应的开辟或者修复后及早进行,以减少冲突的可能性。
3. 标签管理- 在发布稳定版本时,应创建相应的标签,以便于后续的版本追踪和回溯。
- 标签的命名应遵循一定的规则,如使用版本号或者日期进行命名。
- 标签创建后,应禁止对其进行修改,以确保标签的稳定性。
4. 冲突解决- 在更新本地工作副本或者合并分支时,可能会发生代码冲突。
冲突解决应及时进行,避免影响其他团队成员。
- 冲突解决时,应子细检查冲突的原因,并根据实际情况进行相应的修改和调整。
SVN权限设置用户分组

数据仓库下的配置文件:=============================================================== ======svn serve.conf访问权限、权限配置文件设置authz用户组、用户、访问权限设置pass wd 用户、密码设置=============================================================== ======S VN 用户名密码的保存位置<BR><BR>C:\Do cumen ts an d Set tings\Admi nistr ator\Appli catio n Dat a\Sub versi on\au th<br>C:\DO CUME~1\ADM INI~1\Appl ic~1\Subve rsion\auth=============================================================== ======【参数设置】创建数据仓库:D:\s vn_re posit ory---------ser ver上的数据仓库(1) 选择D:\s vn_re posit ory(2) 右键,To...SVN\ cre ate r eposi toryhere\...FS FS(3) 修改配置:D:\svn home\conf\svnse rve.c onfanon-acces s = r eadauth-acces s = w ritepass word-db =passw d注释去掉p asswd文件中加用户配置好后重启,再chec kout试试! 详见:配置文件:s vnser ve.co nf----------------------------------------------------------### This file cont rolsthe c onfig urati on of thesvnse rve d aemon, ifyou### us e itto al low a ccess to t his r eposi tory. (If youonlyallow###acces s thr oughhttp: and/or fi le: U RLs,thenthisfileis### irr eleva nt.)###Visit http://su bvers ion.t igri/ formoreinfor matio n.[gener al]### Th ese o ption s con trolacces s tothe r eposi toryfor u nauth entic ated### a nd au thent icate d use rs. Valid valu es ar e "wr ite", "rea d",### an d "no ne". Thesampl e set tings belo w are thedefau lts.anon-acces s = n onea uth-a ccess = wr ite### Th e pas sword-db o ption cont rolsthe l ocati on of thepassw ord### da tabas e fil e. U nless youspeci fy apathstart ing w ith a /,### th e fil e's l ocati on is rela tiveto th e con f dir ector y.### Unc ommen t the line belo w touse t he de fault pass wordfile.pass word-db =passw d### Theauthz-db o ption cont rolsthe l ocati on of theautho rizat ion### ru les f or pa th-ba sed a ccess cont rol. Unle ss yo u spe cifya pat h### star tingwitha /,the f ile's loca tionis re lativ e tothe c onf### di recto ry. If yo u don't sp ecify an a uthz-db, n o pat h-bas ed ac cess### c ontro l isdone.###Uncom mentthe l ine b elowto us e the defa ult a uthor izati on fi le.#auth z-db= aut hz### Thi s opt ion s pecif ies t he au thent icati on re alm o f the repo sitor y.### Iftwo r eposi torie s hav e the same auth entic ation real m, th ey sh ould### h ave t he sa me pa sswor d dat abase, and vice vers a. T he de fault real m### is r eposi tory's uui d.#realm = My Firs t Rep osito ryauth z----------------------------------------------------------###Thisfileis an exam ple a uthor izati on fi le fo r svn serve.### Itsforma t isident icalto th at of mod_authz_svnautho rizat ion### fi les.### A s sho wn be low e ach s ectio n def inesautho rizat ionsfor t he pa th an d### (opt ional) rep osito ry sp ecifi ed by thesecti on na me.### Th e aut horiz ation s fol low.An au thori zatio n lin e can refe r toa### sing le us er, t o a g roupof us ers d efine d ina spe cial[grou ps]### se ction, orto an yoneusing the'*' w ildca rd. Eachdefin ition can### g rantread('r') acce ss, r ead-w rite('rw') acc ess,or no acce ss ('').#=======================分组配置开始=======================[grou ps]# harr y_and_sall y = h arry,sallyciqc id=lz a,lxqciqc id_ci qcidP latfo rm=lz a,lxq,lml,dw,fx m,sq,xwwc iqcid_sysP latfo rm=lz a,lxq,lml,dw,fx m,sq,xwwc iqcid_en=w fciq cid_d esign=cyc iqcid_img=lq#设置对根(即SVN)目录下,所有版本库的访问权限#* =表示其他的没有任何权限[/]@ci qcid= rw#lza= rw* = [/c iqcid Platf orm]@ciq cid_c iqcid Platf orm = rw* =[/sy sPlat form]#未授权用户没有任何权限@ci qcid_sysPl atfor m = r w* =[/sysP latfo rm/We bRoot/WEB-INF/p ub] #@ciq cid_c iqcid Platf orm = rw#lza = rw#* = [/c iqcid.en]#未授权用户没有任何权限@ciq cid_e n = r w@ci qcid= rw* =#=======================分组配置结束======================= pas swd----------------------------------------------------------### Thi s fil e isan ex ample pass wordfilefor s vnser ve.### It s for mat i s sim ilarto th at of svns erve.conf. As s hownin th e### exam ple b elowit co ntain s one sect ion l abell ed [u sers].### Thenameand p asswo rd fo r eac h use r fol low,one a ccoun t per line. [u sers]# ha rry = harr yssec ret# sall y = s allys secre tlza=lzasq=sqtdw=tdwl ml=lm l0000=0000lzy=lzywd=wdtlw=tlwl jf=lj fflx=flxzjy=z jyjh=jhs j=sjwqc=w qclt=lth jd=hj dpln=plnzhl=z hlzt=ztl l=lldl=dljnz=jnzz dd=zd dhx=hxwy=wyx ww=xw wfxm=fxmzgh=z ghsk=skl cl=lc lyl=ylsh ejun=sheju nlxy=lxydw=dwlml=lmlz zd=zz dfhj=fhjxf=xfzy=z ylq=lqym y=ymy zzd=zzd h ch=hc h njf=njfjlz=j lzcy=cy#shejilq=l qwj=wj。
SVN管理规范

SVN管理规范一、引言SVN(Subversion)是一种版本控制系统,它能够追踪和管理文件和目录的变化,为团队协作开辟提供了便利。
为了确保SVN的有效使用和管理,制定一套SVN管理规范对于项目的顺利进行至关重要。
二、SVN仓库管理1. 仓库命名规范- 仓库名称应简明扼要,能够清晰表达其所属项目或者部门。
- 仓库名称应使用全小写字母,可以使用连字符或者下划线进行单词分隔。
- 避免使用过于复杂或者含有特殊字符的仓库名称。
2. 仓库权限管理- 仓库管理员应根据项目或者部门的需求,合理分配用户权限。
- 严格控制对仓库的读写权限,仅授权给相关人员。
- 定期审查和更新仓库权限,确保权限的合理性和安全性。
3. 仓库备份- 定期对仓库进行备份,确保数据的安全性和完整性。
- 备份数据应存储在可靠的设备或者服务器上,远离潜在的风险和灾害。
三、SVN代码管理1. 项目结构规范- 项目应按照一定的层次结构进行组织,便于管理和维护。
- 项目根目录下应包含trunk、branches和tags三个子目录。
- trunk目录用于存放主要的开辟代码,branches目录用于存放分支代码,tags 目录用于存放发布版本的代码。
2. 分支管理- 分支应根据项目需要进行创建,每一个分支应有明确的目的和命名规范。
- 分支的创建、合并和删除应经过相应的讨论和审批。
- 定期进行分支合并,确保主干代码的稳定性和一致性。
3. 提交规范- 提交时应提供清晰的提交信息,说明本次提交的目的和内容。
- 提交信息应简明扼要,避免使用含糊不清或者无意义的描述。
- 提交前应确保代码的完整性和可编译性,避免提交存在错误或者冲突的代码。
4. 版本管理- 标记重要的版本里程碑,使用tags目录进行存档和管理。
- 每一个版本的标记应包含版本号、发布日期和简要说明。
- 版本标记应遵循一定的命名规范,便于快速定位和识别。
四、SVN日志管理1. 日志书写规范- 每次提交待码时,应书写详细的日志记录,包括修改的文件、修改的内容和原因等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SVN用户权限管理讲解/***********************************************************///SVNSubversion 用户权限管理//资料来源:网络、总结//2010年7月20日/***********************************************************/ 基本的操作:以我创建的Svn工程为例子来讲解SVN权/***********************************************************/ //SVNSubversion 用户权限管理//资料来源:网络、总结//2010年7月20日/***********************************************************/基本的操作:以我创建的Svn工程为例子来讲解SVN权限管理的配置仓库创建路径:D:\SVNLibrary>>>取消匿名登陆:打开文件D:\SVNLibrary\conf\svnserve.conf找到:###anon-access = read将前面的注释去掉,并将read 改为:none即使:anoe-access=none 表示匿名登陆下的用户权限为空。
即:系统不支持匿名登陆说明:auth-access = write #通过验证的用户可以读和写auno-access = read #匿名登陆下可以只读文件,即:文件修改后无法提交到服务器password-db =password #用户保存文件的名称authz-db =authz #权限管理文件这个是非常重要的,如果我们要对整个工程的文件进行权限分配的时候,就必须将这个行文件前面注释掉,否咋即使我们在权限配置文件里面进行再多的配置都是无效的。
这点我已经犯错了。
然后我们在authz 文件下面进行权限的分配在权限分配的时候要注意的问题:>>>权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。
提示:目录的访问权限既可以分配给组,也可以分配指定用户。
>>>对某个用户,如果只赋给他某个目录的权限,但对上级目录没有赋给,则他不能有上级目录的任何权限例如某个用户有:/repository/project1的r权,而没有/repository的r权>>>对于所有的目录,都优先处理设置在这个目录上的权限设置。
例如sai用户:[/repository]sai = rw对于repository目录,他有rw的权限。
[/repository/project1]sai = r对于repository下的project1目录,他只有r权限。
则,这个saiy用户只有project1的r权。
而repository下其他目录有rw权。
>>>权限分配,只可以分配到某个目录,而不能到某个文件>>>如果某个目录上没有对某个用户设置权限,则一直向上级目录查找,看是否有权限例如sai用户[/repository]sai=rw[/repository/project1]saiya=rw则sai用户一样拥有/repository/project1的读写权限>>>分配权限时,= 的左边为用户,不能想当然的以,号分开加入多个用户>>>如果想设置某用户都没有rw的权限,只要= 号的右边这空即可User1 =>>>如果某一个文件夹,对于人任何用户都没有权限* =其中*代表所有的人SVN深入的部分本章将详细介绍前一章所涉及的两个配置文件,svnserve.conf 和authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义。
这里首先要注意一点,任何配置文件的有效配置行,都不允许存在前置空格,否则程序会无法识别。
也就是说,如果你直接从本文的纯文本格式中拷贝了相关的配置行过去,需要手动将前置的4个空格全部删除。
当然了,如果你觉得一下子要删除好多行的同样数目的前置空格是一件苦差使,那么也许UltraEdit 的“Column Mode”编辑模式,可以给你很大帮助呢。
1 svnserve.confarm\conf\svnserve.conf 文件,是svnserve.exe 这个服务器进程的配置文件,我们逐行解释如下。
首先,我们告诉svnserve.exe,用户名与密码放在passwd.conf 文件下。
当然,你可以改成任意的有效文件名,比如默认的就是passwd:password-db = passwd.conf接下来这两行的意思,是说只允许经过验证的用户,方可访问代码库。
那么哪些是“经过验证的”用户呢?噢,当然,就是前面说那些在passwd.conf 文件里面持有用户名密码的家伙。
这两行的等号后面,目前只允许read write none 三种值,你如果想实现一些特殊的值,比如说“read-once”之类的,建议你自己动手改源代码,反正它也是自由软件:anon-access = noneauth-access = write接下来就是最关键的一句呢,它告诉svnserve.exe,项目目录访问权限的相关配置是放在authz.conf 文件里:authz-db = authz.conf当然,svn 1.3.2 引入本功能的时候,系统默认使用authz 而不是authz.conf 作为配置文件。
不过由于鄙人是处女座的,有着强烈的完美主义情结,看着svnserve.conf 有后缀而passwd 和authz 没有就是不爽,硬是要改了。
2 authz.conf 之用户分组arm\conf\authz.conf 文件的配置段,可以分为两类,``[group]`` 是一类,里面放置着所有用户分组信息。
其余以[arm:/] 开头的是另外一类,每一段就是对应着项目的一个目录,其目录相关权限,就在此段内设置。
首先,我们将人员分组管理,以便以后由于人员变动而需要重新设置权限时候,尽量少改动东西。
我们一共设置了5个用户分组,分组名称统一采用g_ 前缀,以方便识别。
当然了,分组成员之间采用逗号隔开:[groups]# 任何想要查看所有文档的非本部门人士g_vip = morson# 经理g_manager = michael# 北京办人员g_beijing = scofield# 上海办人员g_shanghai = lincon# 总部一般员工g_headquarters = rory, linda# 小秘,撰写文档g_docs = linda注意到没有,linda 这个帐号同时存在“总部”和“文档员”两个分组里面,这可不是我老眼昏花写错了,是因为svnserve.exe 允许我这样设置。
它意味着,这个家伙所拥有的权限,将会比他的同事rory 要多一些,这样的确很方便。
具体多了哪些呢?请往下看!3 authz.conf 之项目根目录接着,我们对项目根目录做了限制,该目录只允许arm事业部的经理才能修改,其他人都只能眼巴巴的看着:#设置对根(即SVNLibrary)目录下,所有版本库的访问权限[/]* = r #所有登录用户默认权限为只读[arm:/] #设置对arm版本库中,所有项目的访问权限@g_manager = rw* = r[arm:/] 表示这个目录结构的相对根节点,或者说是arm 项目的根目录这里的@ 表示接下来的是一个组名,不是用户名。
你当然也可以将@g_manager=rw 这一行替换成michael=rw ,而表达的意义完全一样。
* 表示“除了上面提到的那些人之外的其余所有人”,也就是“除了部门经理外的其他所有人”,当然也包括总经理那个怪老头* = r 则表示“那些人只能读,不能写”4 authz.conf 之项目子目录然后,我们要给总部人员开放日志目录的读写权限:[arm:/diary/headquarters]@g_manager = rw@g_headquarters = rw@g_vip = r* =我敢打赌,设计svn的家伙们,大部分都是在unix/linux 平台下工作,所以他们总喜欢使用/ 来标识子目录,而完全忽视在MS Windows 下是用\ 来做同样的事情。
所以这儿,为了表示arm\diary\headquarters 这个目录,我们必须使用[arm:/diary/headquarters] 这样的格式。
这里最后一行的*= 表示,除了经理、总部人员、特别人士之外,任何人都被禁止访问本目录。
这一行是否可以省略呢?之所以这儿需要将@g_vip=r 一句加上,就是因为存在上述这个解释。
如果说你没有明确地给总经理授予读的权力,则他会和其他人一样,被* 给排除在外。
如果众位看官中间,有谁玩过防火墙配置的话,可能会感觉上述的配置很熟悉。
不过这里有一点与防火墙配置不一样,那就是各个配置行之间,没有先后顺序一说。
也就是说,如果我将本段配置的*= 这一行挪到最前面,完全不影响整个配置的最终效果。
请注意这儿,我们并没有给arm\diary 目录设置权限,就直接跳到其子目录下进行设置了。
我当然是故意这样的,因为我想在这儿引入“继承”的概念。
权限具备继承性任何子目录,均可继承其父目录的所有权限,除非它自己被明确设置了其他的权限。
也就是说,在arm 目录设置权限后,arm\diary 目录没有进行设置,就意味着它的权限与arm 目录一样,都是只有经理才有权读写,其他人只能干瞪眼。
【* = 是否可以省略】【用例子引入覆盖】【单用户权限的继承问题】【父目录权限集成与全面覆盖问题】现在来看看好了,我们现在掌握了“继承”的威力,它让我们节省了不少敲键盘的时间。
可是现在又有一个问题了,属性具备覆盖性质子目录若设置了属性,则完全覆盖父目录。
5 authz.conf 的其他注意点父目录的r 权限,对子目录w 权限的影响把这个问题专门提出来,是因为在1.3.1及其以前的版本里面,有个bug,即为了子目录的写权限,项目首目录必须具备读权限。
因此现在使用了1.3.2版本,就方便了那些想在一个代码库存放多个相互独立的项目的管理员,来分配权限了。
比如说央舜公司建立一个大的代码库用于存放所有员工日志,叫做diary,而arm事业部只是其中一个部门,则可以这样做:[diary:/]@g_chief_manager = rw[diary:/arm]@g_arm_manager = rw@g_arm = r这样,对于所有arm事业部的人员来说,就可以将svn://192.168.0.1/diary/arm 这个URL当作根目录来进行日常操作,而完全不管它其实只是一个子目录,并且当有少数好奇心比较强的人想试着checkout 一下svn://192.168.0.1/diary 的时候,马上就会得到一个警告“Access deni”,哇,太酷了。