SVN权限控制
SVN实现精细的目录访问权限

[users] morson = ShowMeTheMoney michael = mysecretpassword scofield = hellolittilekiller lincon = asyouknows111 rory = 8809117 linda = IlikeWorldCup2006
3.2.6 导入代码 在客户机 F:\ temp 目录下,建立好前述“背景假设”一节中描述的目录结构,然后用命令 F:\ temp>svn import arm svn://192.168.0.1/arm --username michael --password mysecretpassword 导入整个目录结构。
感谢 提供的 Subversion 空间,让更多的人可以通过 svn 获得本文件。
感谢 google 公司提供的免费主页空间,让我可以放置完全定制的 HTML 文件。
3 实战本章先直接给出需求及其最终的结果,如果你觉得对配置有什么疑问,或者看不懂,请不要着 急,我会在后面的章节详细描述的。
在实际的工作当中,我们有时候会遇见需要控制项目目录的访问权限的情况,比如说对项目的一些关键 模块进行限制,仅允许少数授权人士才可以修改等。由 于项目的目录本身就是作为版本库的一个部分 被 Subversion 所收管,所以我们无法利用操作系统的帐户权限体系,来实现授权控制。因此,这个 问题就只有让 svn 自己来解决了。
本文是利用 reST 格式来编写的,如果你对它感兴趣,请访问 /rst.html 。如果想要看到更好的 html 格式,你可以通篇复制本文到 一个文本文件里,然后利用 docutils 的 rst2html.py 脚本编译它,当然,首先你必须安装 python。
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的权限管理与设置

Win7 系统搭建SVN 服务端和客户端图文使用方法1、安装好VisualSV N Server后,运行VisualSVN Server Manger,打开服务器的Visual SVN 界面:2、创建仓库(reposi tory)第一种方式:按照上图,创建新的代码库,在下图所示的文本框中输入代码名称:上图中选择“e mptyrepost ory”,则在代码库只创建空的代码库Sta rtKit,选下面的“singl e-projec t”则在代码库S t artK it下面会创建tru nk、branch es、tags三个子目录;3种仓库默认推荐权限设置(Nobody…不允许任何人访问All Subver sionusers…所有svn用户都可以Custom ize permis sions自定义权限允许,这里下面有个按钮,我们可以过会继续设置,当然你也可以在这里设置,然后点cre ate创建)这里有个Re posit ory URL这个地址就是客户端获取服务器代码的地址,你可以先记下来,也可以通过右击仓库名可以获得。
前面的WIN-TV..什么的是你计算机的名字,客户端都是服务器的ip地址就行了这就是标准的b ranc hes,tags,trunk服务器版本我们现在右击整个仓库,就是MyBl og项目,我们现在来创建一个ad min管理员,用户名adm in,密码admi n,你可以在Us ers查找到他,可直接修改密码点击“OK”创建完代码库后,没有任何内容在里面。
我会在这个教程的第二部分说明如何迁入源代码。
下面,我们开始安全性设置,在左侧的Us ers上点击右键:输入上面的信息,点击OK,我们就创建一个用户了。
SVN安装配置, 权限, 目录访问

关键词:s version, 安装配置, 权限, 目录访问1 前言2 基本概念2.1 什么是版本控制2.2 什么是 S version2.3 版本库(repository)3 安装配置3.1 安装独立服务器 SVNServer3.2 安装 ApacheSVN 服务器4 FAQ5 参考资料1、前言花了72小时,终于把 S version 初步掌握了。
从一个连―什么是版本控制‖都不知道的门外汉,到配置出精确至每目录访问的入门者,中间还卡了一天时间。
其中费了许多气力,摸索实验了多次,还差点放弃了,但是收获是巨大的。
现把我的配置和学习过程写下来,供大家参考,也让初学者少走弯路。
以下仅以 Windows 平台为例讲解,Unix/Linux 平台请参考相关资料。
如其中有谬误的地方,包括错别字,请联系我修订。
技术在分享中进步!2、基本概念2.1、什么是版本控制简单点来说,版本控制就是数据仓库,它可以记录你对文件的每次更改。
这样,就算你在昏天黑地的改了几个月后老板说不要了,还是按照过去那样,你也不会抓狂,简单的恢复版本操作就搞定一切。
2.2、什么是 S versionS version是一个自由/开源版本控制系统,它管理文件和目录可以超越时间。
一组文件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。
从这个方面看,许多人把版本控制系统当作一种―时间机器‖。
S version可以通过网络访问它的版本库,从而使用户可以在不同的电脑上使用。
一定程度上可以说,允许用户在各自的地方修改同一份数据是促进协作。
进展可能非常的迅速,并没有一个所有的改变都会取得效果的通道,由于所有的工作都有历史版本,你不必担心由于失去某个通道而影响质量,如果存在不正确的改变,只要取消改变。
一些版本控制系统也是软件配置管理(SCM)系统,这种系统经过特定的精巧设计来管理源代码,有许多关于软件开发的特性—本身理解编程语言、或者提供构建程序的工具。
Visual SVN权限配置

Visual SVN的权限配置是在SVN_ROOT根目录下面的三个文件内1)authz:Visual SVN账户权限配置;2)authz-windows:如果使用Windows域账户,权限配置在此文件配置;3)htpasswd:账户名及密码;注:SVN正常是在每个版本库内都有单独的权限配置文件,如project、office、public等目录内都会有单独的权限配置文件,而VisualSVN将所有版本库的权限配置集中到了根目录下面。
相对配置更加简单。
我们目前使用以下两种方式进行权限的设置:1、Visual SVN图形化控制界面在该界面可以实现如下功能:1)新建用户user;2)新建组Group并添加用户user;3)配置用户user或组group对产品库如Project、Office、Public的访问权限;2、手动修改authz文件进行权限配置,但是需要注意以下几点:1)authz文件为“UTF-8 无BOM”格式,在使用记事本打开修改保存之后需要注意避免修改格式。
建议使用UltraEdit进行修改并且保存为“UTF-8 无BOM”格式。
2)authz文件目前测试发现将其中Windows2008中Copy到XP系统内本身就会发生变化,如38k大小的文件会变成48k,在将xp内的authz不做任何修改copy会SVN_ROOT 中时,VisualSVN打开时依然会提示“……\authz:1: Section header expected”错误。
由此可见在Copy到XP时文件已经发生了修改。
具体原因不详,目前直接在windows2008 server当中进行修订并保存为“UTF-8无BOM”格式,验证OK。
验证Copy到windows7 64bits中没有文件大小无变化。
王新2014年5月4日。
SVN在Windows下的权限分配

SVN在Windows下的权限分配修订记录日期修订版本修改章节修改描述作者2008-10-20 1.0 匿名权限分配睢攸岚2008-11-9 2.0 用户权限分配郝阔君、乔良一、 使用说明本文档的目的是指导SVN(Subversion)初学者,可以通过使用SVN来进行版本控制和人员权限分配。
阅读完本文档你将有如下收获:¾熟悉SVN服务器端的权限分配;¾熟悉SVN客户端的版本回溯;二、 阅读前的准备本示例使用的SVN服务器版本号为[Subversion-1.4.5],使用的的客户端版本号为[TortoiseSVN 1.4.7],本示例不指导服务器端和客户端的安装,如果您想了解权限分配部分请确保您至少安装了SVN服务器端,如果您想了解版本回溯部分请确保您至少安装了SVN客户端。
下面开始正式介绍。
三、 创建SVN仓库创建一个空文件夹,取名svnroot(仓库名,自己任意取),右键文件夹选择[Create repository here…],如下图所示:单击确定后会出现如下图选择创建数据库类型对话框,选择默认的[FSFS]本地文件系统即可,单击确定提示您创建成功:下面创建一个启动服务的批处理文件,文件内容如下图所示,双击运行该批处理文件后,相应的仓库即启动服务:至此,您已经成功创建了本地SVN仓库,只要启动服务,别人就可以通过您的仓库进行相关操作。
四、 SVN的版本回溯功能首先你需要在客户端创建一个连接仓库的本地文件夹,利用Checkout下载服务器上你有权限操作的内容,然后如下图所示操作:在下图所示地方填入您要回滚得版本号,单击OK即可:五、 匿名用户权限分配首先进入你的仓库目录下面的[../conf]文件夹下面,你会看到如图所示三个文件,其中的[svnserve.conf]存储普通的配置信息,[passwd]存储所有的授权用户的用户名和密码信息,[author]存储用户权限信息。
VisualSvn权限控制

对authz文件编辑时须注意问题:
1. 已经删除的组不能被分配权限,不然会导致文件解析出 错。
2. svn对于非英文文件名和目录名使用utf-8格式编码处理, 要对中文目录进行正确控制,应该使用无BOM的utf-8格 式,如果在编辑中格式出现错误,svn无法解析。
组管理
点击Add按钮,可以在该组中添加成员,在 添加成员时,不仅能加入用户,同时也能加 入其他组。
权限分配操作
左侧选择要分配权限的项目,右键出菜单,选择Manage Security选项,可以在权限分配窗口中对用户进行权限分配。 点击Add按钮可以添加用户或组。然后在下方选择对于的 权限
权限分配的粒度
VisualSvn权限控制
VisualSvn是简便化的svn服务器端,能通过图 形化的方式方便地配置用户、用户组、以及对 文件的权限控制。
用户管理
在左侧的Users上点击右键:
这样就新建了一个新用户。
组管理
为了方便对于用户权限的设置,可以将具有 相同性质的用户统一分配入一组中,这样在 对权限进行分配时只需对组进行操作,而不 用一个个地对用户操作。 通过如下操作可以新建、编辑组成员:
VisualSvn中权限分配的粒度跨度包括了svn服务器中所管理的 所有项,但是同时权限又是继承的即子节点的权限是基础于 父节点,svn节点类型:
1. 总库:
在总库下可以添加各个库,如现用的
mu2bc就是总库下的一个库。
2. 库: 在库下可以管理文件夹和文件。
svn安装及权限配置

svn安装及权限配置SVN安装及权限配置安装(svn://…访问方式的安装部署)1.安装svn-1.4.5-setup.exe2.将SVNService.exe拷贝到\Subversion\bin下,双击安装。
启动服务。
部署1.创建SVN仓库现在svn的目的位置上,创建相应文件夹,例如:E:/svnroot,然后开始→运行→cmd→输入命令:svnservice -install -d -r E:/svnroot2.启动svnservice服务3.创建项目仓库在svn仓库下创建项目的相应文件夹,例如:E:/svnroot/project1,然后开始→运行→cmd→输入命令:svnadmin create E:/svnroot/project1。
这时,在E:/svnroot/project1会出现conf、dav 等文件夹和文件。
4.有多个项目时,重复步骤3。
权限配置1.修改每个项目中的conf文件夹下的svnserve.conf文件:anon-access = noneauth-access = writepassword-db = ../../passwdauthz-db = ../../authz添加以上项目。
其中,../../passwd表示,向上两级文件夹下的passwd文件。
这样做的目的是,将所有项目的权限放在一个文件中控制。
2.设置加密和权限文件位置将其中一个文件夹下的passwd文件和authz文件拷贝到svnroot下,与每个项目的文件夹平行。
3.设置svn密码,修改passwd文件在【users】下添加用户名及密码,格式如下:用户名= 密码,例如:harry = harrysecret每个用户单独占一行,密码后不用添加任何分隔符号。
4.设置svn权限,修改authz文件:设置【groups】:按照一种规则,将所有人员分组,例如可以按照对每个项目、每个项目的不同权限进行分组,人员之间用逗号分隔,每个组单独占一行,结尾不需要任何分隔符号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
权限配置
作为一个配置管理员,需要管理用户的权限,本文主要介绍了使用Subversion的授权文件“authz-db”,同时为了叙述的清晰,我首先澄清一些概念。
1. 认证(Authentication)和授权(Authorization)
这两个术语经常一起出现。
其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在Subversion里提供了“authz-db”文件,实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限。
2. svnserve下的配置文件
因为本文是以svnserve为例的,所以先介绍一下版本库目录的结构:
D:\SVNROOT\PROJECT1
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks
其中conf下面有三个文件:
authz
passwd
svnserve.conf
其中的“svnserve.conf”是这个版本库的配置文件,当使用svnserve时,这个配置文件决定了使用什么认证和授权文件:
password-db = passwd
authz-db = authz
上面的配置说明使用“svnserve.conf”同目录的passwd和authz,其中的password-db指定了用户密码文件,authz-db是我们的授权文件,也就是我们本文主要介绍的文件。
3. 基于svnserve的版本库文件布局
使用svnserve时,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件svnserve.conf指向同一个password-db和authz-db文件。
下面是一个多版本库的目录:
D:\SVNROOT
├─project1
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
└─project2
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks
D:\SVNROOT下有两个目录project1和project2,都已经创建了版本库,所以我们修改每个conf目录下的svnserve.conf,使之指向同一个password-db 和authz-db文件。
password-db = ..\..\passwd
authz-db = ..\..\authz
这样,D:\SVNROOT\passwd和D:\SVNROOT\authz就控制了所有版本库的svnserve访问。
另外在后面的操作中要关闭匿名访问,应该去掉“anon-access = none”前的“#”号,保证只有认证用户可以访问。
注意:还有一点需要注意,那就是svnserve的“realm”的值,在上面的设置下,应该保证所有的版本库使用相同的realm值,这样,对版本库的密码缓存可以在多个版本库之间共享,更多细节见客户端凭证缓存。
4. 测试用户和组说明
版本库禁止任何匿名用户的访问,只对认证用户有效。
root:配置管理管理员,对版本库有完全的管理权限。
p1_a1:project1的管理员,对project1有完全权限。
p1_d1:project1的开发者,对project1的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p1_t1:project1的测试者,对project1的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。
p2_a1:project2的管理员,对project2有完全权限。
p2_d1:project2的开发者,对project2的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p2_t1:project2的测试者,对project2的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。
对应的组及组的用户:
p1_group_a:p1_a1
p1_group_d:p1_d1
p1_group_t:p1_t1
p2_group_a:p2_a1
p2_group_d:p2_d1
p2_group_t:p2_t1
5. 修改D:\SVNROOT\passwd文件
前面已经说过了,用户和密码文件应该是在D:\SVNROOT\passwd,所以我们为每一位用户设置权限,文件内容如下:
[users]
p1_a1 = p1_a1
p1_d1 = p1_d1
p1_t1 = p1_t1
p2_a1 = p2_a1
p2_d1 = p2_d1
p2_t1 = p2_t1
为了便于验证,所有密码和用户名一致。
6. 配置授权,修改D:\SVNROOT\authz [groups]
# 定义组信息
p1_group_a = p1_a1
p1_group_d = p1_d1
p1_group_t = p1_t1
p2_group_a = p2_a1
p2_group_d = p2_d1
p2_group_t = p2_t1
[/]
# 指定所有的版本库默认只读,root可读写* = r
root = rw
[project1:/]
# 指定对版本库project1根目录的权限
@p1_group_d = rw
@p1_group_t = r
[project1:/trunk/admin]
# 指定对版本库project1的/trunk/admin根目录的权限,
# p1_group_a读写,p1_group_d和p1_group_t没有任何权限。
@p1_group_a = rw
@p1_group_d =
@p1_group_t =
[project2:/]
# 指定对版本库project2根目录的权限
@p2_group_a = rw
@p2_group_d = rw
@p2_group_t = r
[project2:/trunk/admin]
# 指定对版本库project2的/trunk/admin根目录的权限
# p2_group_a读写,p2_group_d和p2_group_t没有任何权限。
@p2_group_a = rw
@p2_group_d =
经过以上设置以后,你会发现当使用用户“p1_d1”,检出project1的trunk 时,目录是空的,好像admin目录根本不存在一样,当使用p1_d1用户浏览版本库时,能够看到admin目录,但是其中的内容却无法看到。
关于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8格式,在我的WINXP的UltraEdit里显示的文件格式为U8-DOS,具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。
再复杂的情况也不过如此,在实际的工作中要首先规划好权限,只赋给用户最小的权限,保证以最小的配置实现最复杂的权限控制。