`

SVN authz 配置详解 转载

 
阅读更多

我们对项目根目录做了限制,该目录只允许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”,哇,太酷了。

默认权限
如果说我对某个目录不设置任何权限,会怎样?马上动手做个试验,将:

[diary:/]
@g_chief_manager = rw

改成:

[diary:/]
# @g_chief_manager = rw

这样就相当于什么都没有设置。在我的 svn 1.3.2 版本上,此时是禁止任何访问。也就是说,如果你想要让某人访问某目录,你一定要显式指明这一点。这个策略,看起来与防火墙的策略是一致的。

只读权限带来的一个小副作用
若设置了:

[arm:/diary]
* = r

则svnserve认为,任何人,都不允许改动diary目录,包括删除和改名,和新增。

也就是说,如果你在项目初期创建目录时候,一不小心写错目录名称,比如因拼写错误写成 dairy,以后除非你改动 authz.conf 里面的这行设置,否则无法利用 svn mv 命令将错误的目录更正。

改进
1   对中文目录的支持
上 午上班的时候,Morson 来到 Michael 的桌子前面,说道:“你是否可以将我们的北京办、上海办目录,改成用中文的,看着那些拼音我觉得很难受?” Michael 心想,还好这两天刚了解了一些与 unicode 编码相关的知识,于是微笑地回答:“当然可以,你明天下午就可以看到中文目录名称了。”

使用 svn mv 指令,将原来的一些目录改名并 commit 入代码库,改名后的目录结构如下:

arm
    ├─工作日志
    │  ├─总部人员
    │  ├─北京办
    │  └─上海办
    ├─公司公共文件参考目录
    └─临时文件存放处
   
修改代码库的 authz.conf 文件,将相应目录逐一改名

使用 UltraEdit 将 authz.conf 文件转换成不带 BOM 的 UTF-8 格式

将 配置文件转换成 UTF-8 格式之后,Subversion 就能够正确识别中文字符了。但是这里需要注意一点,即必须保证 UTF-8 文件不包含 BOM 。BOM 是 Byte Order Mark 的缩写,指 UNICODE 文件头部用于指明高低字节排列顺序的几个字符,通常是 FFFE ,而将之用 UTF-8 编码之后,就是 EFBBBF 。由于 UTF-8 文件本身不存在字节序问题,所以对 UTF-16 等编码方式有重大意义的 BOM,对于 UTF-8 来说,只有一个作用——表明这个文件是 UTF-8 格式。由于 BOM 会给文本处理带来很多难题,所以现在很多软件都要求使用不带 BOM 的 UTF-8 文件,特别是一些处理文本的软件,如 PHP、 UNIX 脚本文件等,svn 也是如此。

目前常用的一些文本编辑工 具中,MS Windows 自带的“记事本”里面,“另存为”菜单保存出来的 UTF-8 格式文件,会自动带上 BOM 。新版本 UltraEdit 提供了选项,允许用户选择是否需要 BOM,而老版本的不会添加 BOM。请各位查看一下自己常用的编辑器的说明文件,看看它是否支持这个功能。

利用 UltraEdit ,我们可以将 BOM 去掉。方法是,首先利用“UTF-8 TO ASCII”菜单将文件转换成本地编码,通常是GB2312码,然后再使用“ASCII TO UTF-8(UNICODE Editing)”来转换到 UTF-8 即可。

分享到:
评论

相关推荐

    svn权限文件authz

    公司几百人用一个SVN库,一个权限文件Authz 整理下来很不容易!

    SVN服务器配置详解

    最后,"SVN服务器配置.doc"和"SVN服务器端配置.doc"可能提供了具体的服务器配置示例和注意事项,确保你按照文档中的步骤进行操作,以避免配置错误。 总的来说,SVN服务器配置涉及多个环节,包括服务器软件的安装、...

    SVNManager配置详细说明文档

    SVNManager 配置详细说明文档 SVNManager 是一个基于 Web 的 SVN 管理软件,旨在提供一个统一的平台 для管理 SVN 仓库和控制访问权限。该软件基于 SVN 核心,结合 Apache 和 PHP,提供了一个完整的 SVN 管理解决...

    svn配置详解文档

    ### SVN配置详解 #### 一、SVN简介与配置背景 Subversion (简称SVN) 是一种开源版本控制系统,主要用于代码版本管理。它通过记录文件和目录的变化来帮助团队成员协同工作,支持分布式开发和非线性开发模式。本文档...

    svnmanager 配置 svnmanager 配置

    svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svnmanager 配置 svn...

    实例方式讲解svn目录权限设置

    svn目录权限设置详解 随着软件开发的日益复杂,版本控制系统的重要性变得更加明显。Subversion(SVN)是一种流行的版本控制系统,能够帮助开发者 efektively 管理项目的版本变更。但是,SVN的权限设置一直是开发者...

    SVN安装配置手册

    ### SVN安装配置手册知识点解析 #### 一、软件获取与安装 - **SVN服务器**:SVN(Subversion)是一种分布式版本控制系统,用于管理软件开发中的源代码版本控制。安装SVN服务器可以让团队成员通过网络共享代码库,...

    Apache+SVN+Trac配置详解

    ### Apache+SVN+Trac配置详解 #### 第1章 引言 ##### 1.1 编写目的 本文档旨在详细介绍如何安装与配置Apache、Subversion (SVN) 和 Trac,以便构建一个高效的版本控制系统和项目管理平台。在软件开发过程中,版本...

    配置svn实例视频详解

    配置SVN服务器,详解,以配置一个服务器为例

    svn权限配置

    ### SVN权限配置详解 在软件开发团队中,版本控制系统如Subversion(SVN)是必不可少的工具之一。SVN不仅提供了版本控制的功能,还具备强大的权限管理能力,这对于确保代码安全性和团队协作效率至关重要。本篇文章...

    SVN版本管理详解-08210246.pdf

    服务器配置是使用SVN管理版本库时必须了解的。它包括如何设置网络模型,以及如何使用svnserve和httpd配置服务器。此外,还介绍了认证模块mod_dav_svn,它是Apache的WebDAV模块的一个扩展,用于支持Subversion的认证...

    svn 服务配置教程

    svn 服务配置教程svn 服务配置教程svn 服务配置教程

    配置SVN服务器 svn配置

    配置SVN服务器的关键在于权限管理,通过`svnserve.conf`和`authz`文件,可以精细地控制哪些用户或用户组可以访问哪些资源,以及他们可以进行的操作。SVN的这种灵活性使得它非常适合团队协作,特别是在大型项目中,...

    SVN详细配置和使用

    ### SVN详细配置和使用 #### 一、背景与需求 版本控制系统在软件开发过程中扮演着极其重要的角色。本文档将详细介绍Subversion (SVN) 的配置及使用方法,并结合具体的场景来阐述其重要性。 ##### 开发中的实际...

    SVN属性配置:必须输入日志/日志模版

    标题中的“SVN属性配置:必须输入日志/日志模版”指的是在使用Subversion(SVN)版本控制系统时,对于提交操作的一个规范设置。SVN允许用户为每个文件或目录设置特定的属性,这些属性可以控制提交行为,比如强制用户...

Global site tag (gtag.js) - Google Analytics