??xml version="1.0" encoding="utf-8" standalone="yes"?>黄色电影免费在线看,色爱区成人综合网,亚洲一区亚洲二区http://www.aygfsteel.com/ywjcy/category/28103.htmlzh-cnFri, 14 Dec 2007 15:32:14 GMTFri, 14 Dec 2007 15:32:14 GMT60subversion和apache,apr,apr-util的关p?/title><link>http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167746.html</link><dc:creator>雨夜清枫</dc:creator><author>雨夜清枫</author><pubDate>Fri, 14 Dec 2007 05:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167746.html</guid><wfw:comment>http://www.aygfsteel.com/ywjcy/comments/167746.html</wfw:comment><comments>http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ywjcy/comments/commentRss/167746.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ywjcy/services/trackbacks/167746.html</trackback:ping><description><![CDATA[<p>作者:PCplayer</p> <p>来自Q我用Subversion - <a >http://www.iUseSVN.com</a></p> <p>旉Q?007.3.8</p> <p>修改旉Q?007.10.26</p> <p>很多朋友初次接触Subversion时不是很理解subversion和apache的关pR?/p> <p>我在q里单说明一下svn服务器和客户端的安装说明?/p> <p><strong>服务?/strong></p> <p>subversion服务器是不需要apache的,但是可以使用apacheQ视具体情况来选择?/p> <p>1、如果只要通过file://或svn://来访问,则不需要apacheQ只安装svn卛_Q用svnserve来作为服务?/p> <p>2、如果你要徏立一个可以通过http://或https://来访问的版本库服务器Q则你需要用apache?/p> <p>Zapache配置Q请?a >http://bbs.iusesvn.com/thread-158-1-1.html</a> ?/p> <p><strong>客户?/strong></p> <p>在windows下,不管你要讉K的是什么类型的服务器,只要安装一个TortoiseSVN可以了Q开发者已l帮你搞定一切?/p> <p>在类Linuxpȝ下,如果你通过file://或svn://来访问,则只要编译安装svn可以,</p> <p>如果通过http://讉KQ则要同neon~译Q?/p> <p>如果通过https://讉KQ则要同带ssl支持的neon~译Q?/p> <p>不论怎样Q都要同apr和apr-util~译?/p> <p>neon、apr、apr-util也很Ҏ获得Q目前发布的subversion代码都会有一个叫做subversion-deps-xxx的文Ӟ比如1.4.3的就是subversion-deps-1.4.3.tar.bz2</p> <p>对于讉K国外|站比较慢的朋友Q下载Subversion和客LQ可以到 <a >http://www.iUseSVN.com</a>Q因带宽和流量有限,|站只对注册用户开放下载,q点有点ȝQ但是很值得Q一是下载速度的确相当快,二是里面有很多热于与大家交流的Subversion爱好者?/p> <img src ="http://www.aygfsteel.com/ywjcy/aggbug/167746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ywjcy/" target="_blank">雨夜清枫</a> 2007-12-14 13:12 <a href="http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现_的目录访问权限控Ӟv1.0 更新?006.12.05Q?/title><link>http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167745.html</link><dc:creator>雨夜清枫</dc:creator><author>雨夜清枫</author><pubDate>Fri, 14 Dec 2007 05:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167745.html</guid><wfw:comment>http://www.aygfsteel.com/ywjcy/comments/167745.html</wfw:comment><comments>http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ywjcy/comments/commentRss/167745.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ywjcy/services/trackbacks/167745.html</trackback:ping><description><![CDATA[================<br /> Subversion之\<br /> ================<br /> ----------------------------<br /> 实现_的目录访问权限控?br /> ----------------------------<br /> <br /> <br /> :作? 郑新?br /> :联系: zhengxinxing <AT> gmail <DOT> com<br /> :状? 正稿<br /> :版本: 1.0<br /> :修订: $Id: The.Road.to.Subversion_authz.rst 1749 2006-12-05 08:05:59Z zhengxinxing $<br /> :版权:  作者保留对本文的一切修攏V发布等权力。Q何h惌转蝲本文部分或全部内ҎQ必M留包括作者、联pR状态、版本、修订、版权,共六信息,q给出出处。对本文的参考引用,则不受限制?br /> <br /> :关键? Subversion 目录讉K 权限<br /> <br /> :献辞:<br /> <br />     仅以本文Q献l中国广大的自由软g爱好者们<br /> <br /> :摘要:<br /> <br />     本文从一个实际的例子入手Q介l了如何利用 Subversion 自带的目录管理功能,来实现对目目录的精l访问权限的控制。同时描qC在配|的q程中,需要注意的一些地方,如对中文的处理等?br /> <br /> <br /> .. section-numbering::<br /> .. contents:: ??br />    :backlinks: top<br /> <br /> <br /> <br /> 前言<br /> ====<br /> <br /> Subversion 权限?br /> -------------------<br /> <br /> ?Subversion 的用当中,存在“认证”?#8220;授权”两个概念。认证,?authenticationQ是指用户名与密码的认证。授权,?authorization Q是指某用户Ҏ个目录是否具备读、写权限的一U审核。这两者配合作用,q成了 Subversion 的整个帐L理体pR?br /> <br /> 在实际的工作当中Q我们有时候会遇见需要控刉目目录的讉K权限的情况,比如说对目的一些关键模块进行限Ӟ仅允许少数授权h士才可以修改{。由于项目的目录本n是作ؓ版本库的一个部分被 Subversion 所收管Q所以我们无法利用操作系l的帐户权限体系Q来实现授权控制。因此,q个问题只有让svn自己来解决了?br /> <br /> Subversion 提供了面向目录的帐户权限理功能Q通过它,我们可以很_地实现项目目录的讉K控制。不q在 1.2 及其以前的版本,我们只能利用 mod_authz_svn.so 模块Q结?Apache 服务器来实现目录讉K控制Q这对于?Apache 的配|与使用不是很熟悉的人来_׃是很方便了。而Subversionl于?1.3 版本上,?svnserve.exe 服务器里面添加了q一功能Q方便了很多人?br /> <br /> <br /> 其他信息<br /> --------<br /> <br /> 本文面向那些 Subversion 的管理员Q或者Q何对 Subversoin 有兴的Z。本文假定读者对Subversion有一定的了解Q因此不打算Ҏ有涉及到的安装、用,做一个细节性的描述。若对于文章中描q的其他l节斚w有所疑问Q请讉K“参考文?#8221;一节里面的参考资料。如果你Ҏ文Q何地Ҏ什么意见,或者发现本文有着大大小的错误,误p?zhengxinxing <AT> gmail <DOT> com ?br /> <br /> <br /> 本文是基?Subversion 1.3.2、MS Windows 2003 Server Edition q_来编写的Q且 Subversion 服务器是利用 svnserve.exe 来架讄。不q,本文讲述到的l大多数内容Q都是不仅与操作pȝq_无关Q而且与是采用 svnserve(.exe) q是使用 Apache 来作?Subversion 服务器也基本无关。因此ؓ免罗嗦,本文׃ svnserve(.exe) Zq行描述Q而略q?Apache 服务器相关的内容Q有兴趣的读者可以参考其他文章来?Apache 服务器下实现cM的功能?br /> <br /> 本文是利?reST 格式来编写的Q如果你对它感兴,误?<a target="_blank">http://docutils.sourceforge.net/rst.html</a> 。如果想要看到更好的html格式Q你可以通篇复制本文C个文本文仉Q然后利?docutils ?rst2html.py 脚本~译它,当然Q首先你必须安装 python?br /> <br /> 本文的获得方式:<br /> <br />   - 原始发布点: <a target="_blank">http://iusesvn.com/bbs/thread-6-1-1.html</a><br />   - 完整源文Ӟ请利?svn 命o来获取,命o?nbsp; ``svn co svn://cvs.woodpecker.org.cn/woodpecker/zqlib/tangle/michael.zheng/road2svn``<br />   - HTML版式文gQ请讉K <a target="_blank">http://zhengxinxing.googlepages. ... bversion_authz.html</a> Q推荐) ?<a target="_blank">http://swjr.blog.com.cn/archives ... version1authz.shtml</a> <br /> <br /> <br /> <br /> 致谢<br /> ====<br /> <br /> 非常感谢 iusesvn.com 站的站长 PCplayer Q他在本文编写过E中Q给我提Z很多宝贵的意见与?br /> <br /> 感谢 woodpecker.org.cn 提供?Subversion I间Q让更多的h可以通过 svn 获得本文件?br /> <br /> 感谢 google 公司提供的免费主늩_让我可以攄完全定制?HTML 文g?br /> <br /> <br /> 实战<br /> ====<br /> <br /> 本章先直接给出需求及其最l的l果Q如果你觉得寚w|有什么疑问,或者看不懂Q请不要着急,我会在后面的章节详细描述的?br /> <br /> <br /> 背景假设<br /> --------<br /> <br /> 厦门央瞬公司是一家电子元器g讑֤供应商,其中有个ARM部门Q专门负责ARM芯片的方案设计、销售,q在北京、上各讄了一个办事处。对于工作日志,原先采用邮g方式发给l理Q但是这U方式有个缺点,那就是不具备q箋性,要看以前的日志必M一邮件去查看Q很ȝ。于是就惛_利用 SubversionQ让员工在自q脑上~辑日志Q然后利用svn传送回来,既方便员工自q写日志,又方便对日志的归档处理,而且提交日志的时候只需要执行一?svn commit 卛_Q比发送邮件还要简单的多?br /> <br /> - svn服务器相关信?br /> <br />   - 服务器地址Q?192.168.0.1<br />   - 服务器OSQ?MS Windows 2000 Server Edition 中文?br />   - 用于存放日志的代码库本地目录Q?``D:\svn\arm``<br /> <br /> - arm部门文档的目录结构如?:<br /> <br />     arm                 部门名称<br />     ├─diary           工作日志目录<br />     ?nbsp; ├─headquarters    总部工作日志目录<br />     ?nbsp; ├─beijing         北京办日志目?br />     ?nbsp; └─shanghai        上v办日志目?br />     ├─ref             公司公共文g参考目?br />     └─temp            临时文g目录<br /> <br /> - 人员情况<br /> <br />   - morsonQ公司ȝ理,不习惯用电脑,更喜Ƣ传l的U怸W,以及面对面的交流<br />   - michaelQarm事业部的部门l理Q没事的时候喜Ƣ弄点儿新技术,用svn来管理日志,是他想出来的主?br />   - scofieldQ北京办人员Q老员工,ZhҎ隄<br />   - linconQ上办人员Q老员工,大老实Z?br />   - lindaQ总部协调员、秘书,文笔不错Q长得也不错<br />   - roryQ单片机技术员Q技术支?br /> <br /> - 讉K权限需求分?br /> <br />   - 允许ȝ理、部门经理读取所有文件。顺便给他们开攑ֆ权限Q以便体现对他们职位的尊重,虽然对于某些文g来说Q他们若拥有“?#8221;权限其实也没什么用?br />   - 除部门经理外Q所有其他h员,均只能看到本办事处h员工作日?br />   - 不允许匿名访?br />   - ref目录只允许经理和U书dQ对其他人只?br />   - temp目录Zh都可以随意读?br /> <br /> <br /> 使用 svnserve.exe 作ؓ Subversion 服务?br /> ----------------------------------------<br /> 本节描述如何利用 svnserve.exe 来作Z码库服务器端Q实Cq功能。至于另外一U代码库服务器端Q即利用 Apache l合 mod_dav_svn.so 来实现的代码库服务器端,׃其对于本文叙q的内容“实现_的目录访问权限控?#8221;而言Q与前者没有太大的区别Q故而略q不提。它们二者只是在初次安装、配|方面存在一些不同,有兴的读者,可以参考其他文档,重新实验下述步骤?br /> <br /> <br /> 启动 Subversion 服务<br /> ````````````````````<br /> 在服务器端,打开一个命令行H口Q用CD命oq入 Subversion 安装目录下的 bin 目录Q运行如下指?:<br /> <br />     svnserve -d -r d:\svn<br /> <br /> 其中?-d 参数表示 svnserve.exe 会作ؓ一个服务程序运行在后台Q?-r 参数表示?``D:\svn`` 目录指定Z码库的根目录。这P当客L使用cM svn://192.168.0.1/foo q样内容?URL 来访问服务器时候,其所讉K到的真实代码库,其实是 ``D:\svn\foo``<br /> <br /> 用上q命令行方式启动?svn 服务有个缺点,是在本试验q程中,服务器端必须要一直开着那个q行了上q命令的DOSH口Q不能关闭它。如果不想看到这个窗口,可以?svnserve 安装?windows 的一?servicesQ安装方式请参考其他文章?br /> <br /> <br /> 建立代码?br /> ``````````<br /> 在服务器端的 ``D:\svn`` 目录下,建立一个名?arm 的代码库Q命令如?:<br /> <br />     D:\svn>svnadmin create arm<br /> <br /> 使用上述命o之后Q如果不出问题的话,?``D:\svn`` 目录下就会多Z个叫?``arm`` 的目录,其下具备 conf、dav、hooks、locks、db {子目录或文Ӟ此即 **一个名为arm的代码库** 。从此,通过 ``svn://192.168.0.1/arm`` q样?URLQ我们就可以对这个代码库q行讉K了。接下来pq入本文的正题了Q也是权限配置部分了?br /> <br /> 其实q入 ``arm\conf`` 目录你就会发玎ͼ它下面已l存在三个写了一些帮助信息和CZ的配|文Ӟ以帮助用户尽早掌握其配置Ҏ。这三个默认的配|文件分别是 svnserve.conf、passwd、authz 。其中后两者没有后~Q对?windows pȝ的用h_看v来L有些怪异Q所以在接下来的章节里面Q我它们两个都l添加了?conf 后缀Q以便管理?br /> <br /> <br /> ~辑代码库基配置文g<br /> ``````````````````````<br /> 在服务器端,~辑代码库的 ``arm\conf\svnserve.conf`` 文gQ如?:<br /> <br />     [general]<br />     password-db = passwd.conf<br />     anon-access = none<br />     auth-access = write<br />     authz-db = authz.conf<br /> <br /> <br /> 理用户帐号<br /> ````````````<br /> 在服务器端,新徏 ``arm\conf\passwd.conf`` 文gQ如?:<br /> <br />     [users]<br />     morson = ShowMeTheMoney<br />     michael = mysecretpassword<br />     scofield = hellolittilekiller<br />     lincon = asyouknows111<br />     rory = 8809117<br />     linda = IlikeWorldCup2006<br /> <br /> <br /> 建立目录讉K权限控制文g<br /> ````````````````````````<br /> 在服务器端,新徏 ``arm\conf\authz.conf`` 文gQ内容如?:<br /> <br />     [groups]<br />     g_vip = morson<br />     g_manager = michael<br />     g_beijing = scofield<br />     g_shanghai = lincon<br />     g_headquarters = rory, linda<br />     g_docs = linda<br /> <br />     [arm:/]<br />     @g_manager = rw<br />     * = r<br /> <br />     [arm:/diary/headquarters]<br />     @g_manager = rw<br />     @g_headquarters = rw<br />     @g_vip = r<br />     * =<br /> <br />     [arm:/diary/beijing]<br />     @g_manager = rw<br />     @g_beijing = rw<br />     @g_vip = r<br />     * =<br /> <br />     [arm:/diary/shanghai]<br />     @g_manager = rw<br />     @g_shanghai = rw<br />     @g_vip = r<br />     * =<br /> <br />     [arm:/ref]<br />     @g_manager = rw<br />     @g_docs = rw<br />     * = r<br /> <br />     [arm:/temp]<br />     * = rw<br /> <br /> <br /> 导入代码<br /> ````````<br /> 在客h ``F:\temp`` 目录下,建立好前q?#8220;背景假设”一节中描述的目录结构,然后用命?``F:\temp>svn import arm svn://192.168.0.1/arm --username michael --password mysecretpassword`` 导入整个目录l构?br /> <br /> q条指o的精意思是Q将 arm 目录下面的所有东西,导入到那个名?arm 的代码库中去。如果你不指定源目录Q则 svn 会默认将当前目录作ؓ源目录。比如说Q你处于 ``F:\temp`` 目录下的时候,直接执行 ``svn import svn://192.168.0.1/arm`` Q那么当你取Z的代码的时候,你会发现Q居然多了一层名?arm 的目录。结果,你就必须使用cM  ``svn://192.168.0.1/arm/arm`` q样怪异的URLQ才能够正确讉KC的代码们?br /> <br /> q一点粗看好像不是特别重要,不过联想到前q的目录授权规则Q可都是按照标准的项目目录结构来设计的。突然之_你项目的根目录之上,多出了一个名?arm 的目录,那么我们的所有目录授权规则,基本上都要全部改q了Q否则除了根目录Q你永远会得C个莫名其妙的“access denied”。由?Subversion 在这一步骤上的界面不够人性化Q因此这是初学者很Ҏ弄؜的地方之一?br /> <br /> <br /> 试<br /> ````<br /> 在服务器上,打开一?DOS Prompt H口Q输入如下指?:<br /> <br />     svn co svn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117<br /> <br /> 我们应该得到如下目录l构::<br /> <br />     arm<br />     ├─diary<br />     ?nbsp; └─headquarters<br />     ├─ref<br />     └─temp<br /> <br /> 然后修改ref目录下Q意文件ƈ提交Q服务器会报错“Access denied”QBingo! <div id="wmqeeuq" class="t_msgfont"> </div> <div id="wmqeeuq" class="t_msgfont"><font face="宋体"> 深入<br /> ====<br /> <br /> 本章详l介l前一章所涉及的两个配|文Ӟ svnserve.conf ?authz.confQ通过寚w|逐行的描qͼ来阐明其中的一些细节含义。除此之外的其他配置、安装等内容Q不是本文重点,读者若有什么疑问,请参考后?#8220;参考文?#8221;中列出的一些文档?br /> <br /> q里首先要注意一点,M配置文g的有效配|行Q都 **不允许存在前|空?* Q否则程序可能会出错Q给你一?``Option expected`` 的提C。也是_如果你直接从本文的纯文本格式中拷贝了相关的配|行q去Q需要手动将前置?个空格全部删除。当然了Q如果你觉得一下子要删除好多行的同h目的前置I格是一件苦差Q那么也?UltraEdit ?#8220;Column Mode”~辑模式Q可以给你很大帮助?br /> <br /> <br /> svnserve.conf<br /> -------------<br /> <br /> ``arm\conf\svnserve.conf`` 文gQ是 svnserve.exe q个服务器进E的配置文gQ我们逐行解释如下?br /> <br /> 首先Q我们告?svnserve.exeQ用户名与密码放?passwd.conf 文g下。当Ӟ你可以改成Q意的有效文g名,比如默认的就?passwd::<br /> <br />     password-db = passwd.conf<br /> <br /> 接下来这两行的意思,是说只允许经q验证的用户Q方可访问代码库?那么哪些?#8220;l过验证?#8221;用户呢?噢,当然Q就是前面说那些?passwd.conf 文g里面持有用户名密码的家伙。这两行的等号后面,目前只允?read write none 三种|你如果想实现一些特D的|比如?#8220;read-once”之类的,你自己动手改源代码,反正它也是自pY?:<br /> <br />     anon-access = none<br />     auth-access = write<br /> <br /> 接下来就是最关键的一句呢Q它告诉 svnserve.exeQ项目目录访问权限的相关配置是放?authz.conf 文g?:<br /> <br />     authz-db = authz.conf<br /> <br /> 当然Qsvn 1.3.2 引入本功能的时候,pȝ默认使用 authz 而不?authz.conf 作ؓ配置文g。不q可能由于鄙人是处女座的Q据说有着强烈的完主义情l,看着 svnserve.conf 有后~?passwd ?authz 没有是不爽Q硬是要改了?br /> <br /> 上述?passwd.conf ?authz.conf 两个文g也可以作为多个代码库׃n使用Q我们只要将它们攑֜公共目录下,比如说放?``D:\svn`` 目录下,然后在每个代码库?svnserve.conf 文g中,使用如下语句::<br /> <br />     password-db = ..\..\passwd.conf<br />     authz-db = ..\..\authz.conf<br /> <br /> 或?:<br /> <br />     password-db = ../../passwd.conf<br />     authz-db = ../../authz.conf<br />     <br /> q样可以让多个代码库共享同一个用户密码、目录控刉|文Ӟq在有些情况下是非常方便的?br /> <br /> <br /> authz.conf 之用户分l?br /> ---------------------<br /> <br /> ``arm\conf\authz.conf`` 文g的配|段Q可以分Zc, ``[group]`` 是一c,里面攄着所有用户分l信息。其余以 ``[arm:/]`` 开头的是另外一c,每一D就是对应着目的一个目录,其目录相x限,在此段内设|?br /> <br /> 首先Q我们将人员分组理Q以便以后由于h员变动而需要重新设|权限时候,量改动东ѝ我们一p|了5个用户分l,分组名称l一采用 ``g_`` 前缀Q以方便识别。当然了Q分l成员之间采用逗号隔开::<br /> <br />     [groups]<br />     # M惌查看所有文档的非本部门人士<br />     g_vip = morson<br /> <br />     # l理<br />     g_manager = michael<br /> <br />     # 北京办h?br />     g_beijing = scofield<br /> <br />     # 上v办h?br />     g_shanghai = lincon<br /> <br />     # 总部一般员?br />     g_headquarters = rory, linda<br /> <br />     # 秘Q撰写文?br />     g_docs = linda<br /> <br /> 注意到没有, linda q个帐号同时存在“总部”?#8220;文档?#8221;两个分组里面Q这可不是我老眼昏花写错了,是因?Subversion 允许我这栯|。它意味着Q这个家伙所拥有的权限,会比他的同?rory 要多一些,q样的确很方ѝ具体多了哪些呢Q请往下看Q?br /> <br /> <br /> authz.conf 之项目根目录<br /> -----------------------<br /> <br /> 接着Q我们对目根目录做了限Ӟ该目录只允许arm事业部的l理才能修改Q其他h都只能眼巴巴的看着::<br /> <br />     [arm:/]<br />     @g_manager = rw<br />     * = r<br /> <br /> - ``[arm:/]`` 表示q个目录l构的相Ҏ节点Q或者说?arm 目的根目录。其中的 arm 字样Q其实就是代码库的名Uͼ卛_面用 svnadmin create 命o创徏出来的那?arm?br /> <br /> - q里?``@`` 表示接下来的是一个组名,不是用户名。因为目?g_manager l里面只有一?michaelQ你当然也可以将 ``@g_manager = rw`` q一行替换成 ``michael = rw`` Q而表辄意义完全一栗?br /> <br /> - ``*`` 表示“除了上面提到的那些h之外的其余所有h”Q也是“除了部门l理外的其他所有h”Q当然也包括ȝ理那个怪老头<br /> <br /> - ``* = r`` 则表C?#8220;那些人只能读Q不能写”<br /> <br /> <br /> authz.conf 之项目子目录<br /> -----------------------<br /> <br /> 然后Q我们要l总部人员开放日志目录的d权限::<br /> <br />     [arm:/diary/headquarters]<br />     @g_manager = rw<br />     @g_headquarters = rw<br />     @g_vip = r<br />     * =<br /> <br /> q个子目录的讄有些特色Q因Z需求分析中我们知道Q这个子目录的权限范围要比其父目录小Q它不允讔R指定了的之外其他M问。在q段讄中,我们需要注意以下几点:<br /> <br /> - 我敢打赌Q设计svn的家伙们Q大部分都是在类 unix q_下工作,所以他们dƢ?``/`` 来标识子目录Q而完全忽视在 MS Windows 下是?``\`` 来做同样的事情。所以这儿,Z表示 ``diary\headquarters`` q个目录Q我们必M?``[arm:/diary/headquarters]`` q样的格式。当然如果你一定要?``\`` Q那么唯一的结果就是,Subversion 会将你的q部分设|置之不理,全当没看到?br /> <br /> - q里最后一行的 ``* =`` 表示Q除了经理、总部人员、特别h士之外,M人都被禁止访问本目录。这一行是否可以省略呢Q不行,因ؓ **权限具备l承?* Q子目录会自动拥有父目录的权限。若没有q一行,则所有帐号都可以d ``/diary/headquarters`` 目录下的文g。因然我们ƈ没有讄q个目录的父目录权限Q可是默认的规则使得 ``/diary`` 目录的权限与根目录完全一P从而让其余帐号获得?``/diary/headquarters`` 目录?r 权限。所以简单来_ ``* =`` q一句的目的Q就是割断权限承性,使得理员可以定制某个目录及其子目录的权限,从而完全避开其父目录权限讄的媄响?br /> <br /> - 之所以这儉K要将 ``@g_vip = r`` 一句加上,是因ؓ存在上述q个解释。如果说你没有明地lȝ理授予读的权力,则他会和其他ZP?``* =`` l排除在外?br /> <br /> - 如果众位看官中间Q有谁玩q防火墙配置的话Q可能会感觉上述的配|很熟悉。不q这里有一点与防火墙配|不一P那就是各个配|行之间Q没?**先后序** 一说。也是_如果我将本段配置?``* =`` q一行挪到最前面Q完全不影响整个配置的最l效果?br /> <br /> 接下来我们看看这一D?:<br /> <br />     [arm:/ref]<br />     @g_manager = rw<br />     @g_docs = rw<br />     * = r<br /> <br /> q里的主要看点,是 g_docs l里面包含了一?linda 帐号Q她也同时在 g_headquarters l里面出玎ͼq就意味着Q?linda 具备对 ``/ref`` ?``diary\headquarters`` 两个目录的读写权限?br /> <br /> <br /> authz.conf 之目录表C法<br /> -----------------------<br /> 在前面的描述中,我们都采?``[repos:/some/dir]`` q样的格式来表示目的某个目录,比如上一节中的 ``[arm:/diary/headquarters]`` 。而实际上QSubversion 允许你采?```[/some/dir]`` q样的格式,即不指定代码库的方式来表C目录,此时的目录就匚w所有项目?br /> <br /> 对于使用 svnserve 的用h_只有?svnserve q行的时候用了 ``-r`` 参数Qƈ且让多个代码库共享同一个目录权限文Ӟ?authz.conf ?authzQ时Q不指明代码库名U才有可能惹ȝ。一般情况下Q我们对每个代码库都会独立用配|文Ӟ毕竟每个目的目录结构,都有很大不同Q؜在一h义不大。因此一般来_为简zv见,都可以不指明代码库名U。本文全都指明了代码库名Uͼ主要是ؓ了将来扩展成同一个配|文Ӟ以方侉K?Apache 服务器?br /> <br /> 对于使用 Apache 的用h_它们二者可有着很大的不同,因ؓ此时往往习惯于用一个公q目录权限配置文g。如果你使用?SVNParentPath 指oQ则指定版本库的名字是很重要的,因ؓ假若你用后者,那么 ``[/some/dir]`` 部分׃与所有代码库目?``[/some/dir]`` 目录匚w。如果你使用 SVNPath 指oQ则q两U表C方式就没有什么区别了Q毕竟只有一个版本库?br /> <br /> <br /> authz.conf 的其他注意点<br /> -----------------------<br /> <br /> 1. 父目录的 ``r`` 权限Q对子目?``w`` 权限的媄?br /> <br /> 把这个问题专门提出来Q是因ؓ?.3.1及其以前的版本里面,有个bugQ即某个帐号ZҎ个子目录具备写权限,则必d其父目录具备L限。因此现在用了1.3.2及其更高的版本,方便了那些惛_一个代码库存放多个怺独立的项目的理员,来分配权限了。比如说央舜公司建立一个大的代码库用于存放所有员工日志,叫做 diaryQ而arm事业部只是其中一个部门,则可以这样做::<br /> <br />     [diary:/]<br />     @g_chief_manager = rw<br /> <br />     [diary:/arm]<br />     @g_arm_manager = rw<br />     @g_arm = r<br /> <br /> q样Q对于所有arm事业部的人员来说Q就可以?svn://192.168.0.1/diary/arm q个URL当作根目录来q行日常操作Q而完全不它其实只是一个子目录Qƈ且当有少数好奇心比较强的人想试着 checkout 一?svn://192.168.0.1/diary 的时候,马上׃得到一个警?#8220;Access denied”Q哇Q太酷了?br /> <br /> <br /> 2. 默认权限<br /> <br /> 如果说我Ҏ个目录不讄M权限Q会怎样Q马上动手做个试验,?:<br /> <br />     [diary:/]<br />     @g_chief_manager = rw<br /> <br /> Ҏ::<br /> <br />     [diary:/]<br />     # @g_chief_manager = rw<br /> <br /> q样q当于什么都没有讄。在我的 svn 1.3.2 版本上,此时是禁止Q何访问。也是_如果你想要让某h讉K某目录,你一定要昑ּ指明q一炏V这个策略,看v来与防火墙的{略是一致的?br /> <br /> <br /> <br /> 3. 只读权限带来的一个小副作?br /> <br /> 若设|了::<br /> <br />     [arm:/diary]<br />     * = r<br /> <br /> ?Subversion 会认为,M人都不允许改?diary 目录Q包括删除?**改名** Q和 **新增** ?br /> <br /> 也就是说Q如果你在项目初期创建目录时候,一不小心写错目录名Uͼ比如因拼写错误写?dairyQ以后除非你改动 authz.conf 里面的这行设|,否则无法利用 svn mv 命o错误的目录更正?br /> <br /> <br /> 4. anon-access 属性对目录权限的媄?br /> <br /> 你想你的代码库开攄所有h讉KQ于是你开放了匿名讉K权限Q在 svnserve.conf 文g中添加一行: ``anon-access=read`` 。可是对于部分目录,你又不希望别人看刎ͼ于是针对那些特别目录Q你?authz.conf 里面q行配置Q添加了授权讉K的hQƈd?``* =`` 标记。你认ؓ一切OK了,可是你缺发现Q那个特别目录却无法讉K了,L提示 ``Not authorized to open root of edit operation`` 或?``未授权打开根进行编辑操作`` 。你再三查你配置的用户名与密码,认一切正,q是无法解决问题?br /> <br /> 原来QSubversion 有个?bug Q当 ``anon-access=read`` q且某个目录有被讄?``* =`` 标记Q则会出Cq问题。这?bug 在当前最新版本上Qv1.4Q还存在Q也许在下一版本内可以被Ҏ吧?br /> <br /> 解决的办法是Q在 svnserve.conf 中,?anon-access 讄?none ?br /> <br /> <br /> <br /> 改进<br /> ====<br /> <br /> 对中文目录的支持<br /> ----------------<br /> <br /> 上午上班的时候,Morson 来到 Michael 的桌子前面,说道Q?#8220;你是否可以将我们的北京办、上办目录Q改成用中文的,看着那些拼音我觉得很隑֏Q?#8221; Michael 心想Q还好这两天刚了解了一些与 unicode ~码相关的知识,于是微笑地回{:“当然可以Q你明天下午可以看C文目录名UC?#8221;<br /> <br /> 1. 使用 svn mv 指oQ将原来的一些目录改名ƈ commit 入代码库Q改名后的目录结构如?:<br /> <br />     arm<br />     ├─工作日志<br />     ?nbsp; ├─总部人员<br />     ?nbsp; ├─北京?br />     ?nbsp; └─上v?br />     ├─公司公共文g参考目?br />     └─临时文g存放?br /> <br /> 2. 修改代码库的 authz.conf 文gQ将相应目录逐一改名<br /> <br /> 3. UTF-8 格式?authz.conf 文gQ以?BOM<br /> <br />    配|文件{换成 UTF-8 格式之后QSubversion p够正识别中文字W了。但是这里需要注意一点,卛_M?UTF-8 文g不包?BOM 。BOM ?Byte Order Mark 的羃写,?UNICODE 文g头部用于指明高低字节排列序的几个字W,通常?``FF FE`` Q而将之用 UTF-8 ~码之后Q就?``EF BB BF`` 。由?UTF-8 文g本n不存在字节序问题Q所以对 UTF-16 {编码方式有重大意义?BOMQ对?UTF-8 来说Q只有一个作用——表明这个文件是 UTF-8 格式。由?BOM 会给文本处理带来很多NQ所以现在很多Y仉要求使用不带 BOM ?UTF-8 文gQ特别是一些处理文本的软gQ如 PHP?UNIX 脚本文g{,svn 也是如此?br /> <br />   目前常用的一些文本编辑工具中QMS Windows 自带?#8220;C?#8221;里面Q?#8220;另存?#8221;菜单保存出来?UTF-8 格式文gQ会自动带上 BOM 。新版本 UltraEdit 提供了选项Q允许用户选择是否需?BOMQ而老版本的不会d BOM。请各位查看一下自己常用的~辑器的说明文gQ看看它是否支持q个功能?br /> <br />   对于已经存在 BOM ?UTF-8 文gQ比如说是微Y“C?#8221;弄出来的Q我们可以利?UltraEdit 来将 BOM L。方法是Q首先利?#8220;UTF-8 TO ASCII”菜单文件{换成本地~码Q通常是GB2312码,然后再?#8220;ASCII TO UTF-8(UNICODE Editing)”来{换到 UTF-8 卛_。当Ӟq么操作之前Q你肯定得先保证Q你?UltraEdit 保存出来?UTF-8 文g的确是不?BOM 的?br /> <br />   Subversion Z么讨?BOM 呢?我不知道Q毕竟我也只是一个普通用P不是开发h员。如果你感兴,q且英文够好的话Q不妨参考一下这个讨论: <a target="_blank">http://subversion.tigris.org/ser ... ers&msgNo=51334</a><br /> <br /> 参考文?br /> ========<br /> - Subversion官方文档Q?<a target="_blank">http://svnbook.red-bean.com</a><br /> - Subversion 1.3变更记录Q?<a target="_blank">http://subversion.tigris.org/svn_1.3_releasenotes.html</a><br /> - Subversion FAQQ?<a target="_blank">http://subversion.tigris.org/faq.html</a><br /> - UTF-8 常见问题Q?<a target="_blank">http://unicode.org/faq/utf_bom.html</a><br /> <br /> <br /> 历史轨迹<br /> ========<br /> - 2006.06.04Q?v0.1<br /> <br />   * ?<a target="_blank">http://www.iusesvn.com/bbs</a> 首次发布<br /> <br /> - 2006.07.07Q?v0.4<br /> <br />   * 加入 <a target="_blank">www.woodpecker.org.cn</a> ?OBP 目<br /> <br /> - 2006.10.11Q?v0.5<br /> <br />   * 修正部分错误Q调整部分章节顺?br /> <br /> - 2006.12.05Q?v1.0<br /> <br />   * d“权限?#8221;一?br />   * 调整“实战”章的章节序Q添加一些说明,使之更具可读?br />   * 删除一些与 apache 服务器相关的说明<br />   * d“目录表示?#8221;一节<br />   * 重写?#8220;authz.conf 之项目子目录”一节</font></div> <img src ="http://www.aygfsteel.com/ywjcy/aggbug/167745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ywjcy/" target="_blank">雨夜清枫</a> 2007-12-14 13:10 <a href="http://www.aygfsteel.com/ywjcy/archive/2007/12/14/167745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽԶ</a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">ָ</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">Ƥ</a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank">齭</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ҳ</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank">ղ</a>| <a href="http://" target="_blank">«Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">żҿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͳ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">˾</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ӧ</a>| <a href="http://" target="_blank">ո</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽʡ</a>| <a href="http://" target="_blank">캵</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>