案例1:
temp文件夹的目录结构:
temp
├arm
│├folder1
││ ├f1.txt
│├folder2
││ ├f2.txt
│├folder3
││ ├f3.txt
我在temp目录下进行Import 到 版本库 svn://localhost/arm
然后我想将用户A、B、C的访问权限设为folder1、folder2、folder3,也就是A只能访问folder1,B只能访问folder2,C只能访问folder3,另外叫Boss的用户可以所有文件
所以我就对authz文件进行配置A、B、C的权限:
(我这里不对用户进行分组)
[arm:/]
* = r
[arm:/folder1]
Boss = rw
A = r
* =
[arm:/folder2]
Boss = rw
B = r
* =
[arm:/folder3]
Boss = rw
C = rw
* =
按照上面这样的设置法,是不是达到我要的目的了呢?答案是:没有!根本没有!
为什么???????
...........
主要是我导入版本库里的目录结构有那么点细微差别!!!
“注意目录结构的细微的差别”
比如要访问folder1的话,访问路径应该是: svn://localhost/arm/arm/folder1,这里有两个arm,是因为我把temp下的东东导入到了这个版本库:svn://localhost/arm。
而配置权限的时候,[arm:/]这才代表工程的根目录,即:svn://localhost/arm
要想配到folder1目录下,就得这么写: [arm:/arm/],再看我上面所写的权限配置,就知道我错在哪了
案例2:
passwd文件
[users]
fan = 2434582
# harry = harryssecret
# sally = sallyssecret
authz文件
[groups]
# harry_and_sally = harry,sally
[A:/]
fan = rw
# [/foo/bar]
# harry = rw
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
svnserve.conf文件 我打开注释的文件
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
然后运行服务器 svnserve -d -r D:/A 回车(DOS窗口不关)
对我要用的客户端的文件夹点右建checkout 地址栏:svn://localhost/A
当我输入用户名 fan 密码 2434582 时 出现了Error: Authorization failed.
解决方法:
authz文件配置错误,authz文件应该这么写:
[/]
fan = rw
[/]
是svnserve服务指定的根目录
在例子中指的是资源库的根目录
遇到问题:
svnserve.conf:12: Option expected的问题解决方法
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如:
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = read
auth-access = write
像上面的配置文件中,anon-access是顶行的,没问题,而auth-access就存在前置空格,会导致这个错误。
SVN取消记住用户名的方法
以前为了省事,记住了svn的用户名和密码,现在在同一个服务器上用另外一个用户名取文件,一直提示没有权限,鼠标右键看了一遍也没发现有取消用户名的地方,百度了一下,只能用下面方法搞定。
打开C:\Documents and Settings\用户名\Application Data\Subversion\auth\svn.simple,找出以前记住密码那个文件删掉,然后重新更新即会弹出输入用户名密码的界面,输入用户名密码搞定。
----------------------------------------------------
Windows下SVN权限配置说明(一个目录下多库)
1、 本文档适用于对Subvesion的自带服务svnserve进行权限配置,全部在authz文件中完成。
2、 如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为UTF-8格式,微软的记事本保存为UTF-8格式无效,所以不要用。可用如UltraEdit或EditPlus等软件完成,保存时,格式应选择UTF-8 NO BOM。
3、 权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。提示:目录的访问权限既可以分配给组,也可以分配指定用户。
现举例进行说明:
启动服务:服务应指向所有版本库的根目录,本例中为D:\SVN,命令如下:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
项目情况:D盘根目录下有一个文件夹SVN,在该文件夹中有jsyxv3、svntest两个版本库(可以有更多个),这些版本库共享使用同一个权限配置文件,目录结构如下:
D:\SVN
|---jsyxv3 (项目一,子目录略)
|---svntest (项目二,子目录略)
|---authz (共享的权限配置文件)
|---passwd (共享的密码文件)
#=====配置开始=====
#分组:
[groups]
group_admin = wws,aaa,bbb
group_user1 = sj,ccc
group_user2 = sy,dd,eeee
group_user3 = lxt
group_user4 = ss
#设置对根(即SVN)目录下,所有版本库的访问权限
[/]
* = r #所有登录用户默认权限为只读
@group_admin = rw #可以分配给组,该组有读写权限
wws = rw #也可以像这样分配给指定用户
#以下将对各版本库的及其目录进行权限分配
[jsyxv3:/] #设置对jsyxv3版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[jsyxv3:/程序管理] #设置对jsyxv3版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
[jsyxv3:/项目管理] #设置对jsyxv3版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user3 = rw
[svntest:/] #设置对svntest版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[svntest:/程序管理] #设置对svntest版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
@group_user3 = rw
[svntest:/项目管理] #设置对svntest版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user4 = rw
#=====配置结束=====
4、 最后重要提示:
4.1启动的服务与客户端检出的关系:
4.1.1 如果启动的服务指向一个具体的版本库,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN/svntest" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.0.1/
4.1.2 如果启动的服务指向的是多个版本库的父目录,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.0.1/svntest
4.2如果权限管理完成时,对各版本库还未完成导入工作,请记得使用对SVN目录有读写权限的用户身份进行操作,否则有可能会提示操作失败(因为权限不够)。