admin 管理员组

文章数量: 887021


2023年12月22日发(作者:玳瑁是国家一级保护动物)

因为刚来一个新公司,公司里面svn用的不熟练,对权限这块管理的不是很严密,现在又要做配置库迁移,所以就做个权限测试总结,之前在网上看到很多重复的svn权限配置的文章,都感觉千篇一律,刚开始接触svn的人看着还有点绕,其实自己懂了svn权限的关键点,然后逐步尝试,这样的话效果会更好,下面就是我的实际操作,分享给大家,也给自己做个总结。

备注:本次测试的服务器是用的CollabNet Subversion Edge,客户端用的TortoiseSVN;

测试过程分析:

一.测试单独用户权限,不存在组的信息:

测试一:

svn_auth_file--用户文件

配置内容:

admin:$apr1$ExUVYcIZ$0

zhangshan:$apr1$N1nt8KdS$HAm0io/5OTIHKxI.D47NP1

zhaoliu: zhaoliu

说明:admin是登录192.168.0.240:3343/csvn/,系统自动生成的默认用户;

zhangshan是在界面“用户--用户列表”中创建的;zhaoliu是在服务器端直接编辑svn_auth_file文件添加的;

svn_access_file--权限文件

配置内容:

[/]

* =

admin = rw

[LTest:/]

zhaoliu = rw

权限文件解析:

[/]代表对所有仓库的权限也是根目录的意思;*= 代表所有人无任何权利,等后面再一步一步对人逐个设置权限;admin=rw 表示admin用户具备根目录下的读写权限;

[LTest:/]表示仓库"LTest" 的访问权限;zhaoliu = rw 表示zhaoliu这个用户对LTest库下所有的内容有读写权限;

测试结果:

用admin和zhaoliu的账号可以检出LTest库,zhangshan不可以;

用admin和zhaoliu的账号可以只检出LTest/document目录,zhangshan不可以;

测试二:

svn_auth_file--用户文件不变

svn_access_file--权限文件修改为

配置内容:

[/]

* =

admin = rw

[LTest:/]

zhaoliu = rw

[LTest:/document]

zhaoliu = r

zhangshan = rw

测试结果:

前一次的结果admin和zhaoliu的账号权限仍然有效;

用zhangshan的账号不能检出LTest库,可以直接检出LTest/document目录,且可以对文件进行读写操作;

测试三:

svn_auth_file--用户文件不变

svn_access_file--权限文件修改为

配置内容:

[/]

* =

admin = rw

[LTest:/]

liting = rw

[LTest:/document]

liting = r

zhangshan = rw

[LTest:/old]

zhangshan = rw

* =

测试结果:

1)前一次的结果admin和zhaoliu,zhangshan的账号权限仍然有效;

2)用zhangshan的账号不能检出LTest库,可以直接检出LTest/old目录,且可以对文件进行读写操作;

3)用zhaoliu的账号不能直接检出LTest/old目录,但是由于在[LTest:/]下zhaoliu是有读写权限的,所以在直接检出LTest时,只能检出document,在此继承[LTest:/document]的权限只能读不能修改文件;

二.测试用户组权限:

测试一:

svn_auth_file--用户文件

配置内容:

admin:$apr1$ExUVYcIZ$0

zhangshan:$apr1$N1nt8KdS$HAm0io/5OTIHKxI.D47NP1

zhaoliu: zhaoliu

wangwu:wangwu

lishi:lishi

说明:admin是登录localhost:3343/csvn/,系统自动生成的默认用户;

zhangshan是在界面“用户--用户列表”中创建的;zhaoliu,wangwu,lishi是在服务器端直接编辑svn_auth_file文件添加的;

svn_access_file--权限文件

配置内容:

[groups]

admin = admin, zhaoliu

developers = zhangshan,wangwu

manager = lishi

[/]

* =

@admin = rw

[LTest:/]

@developers = r

@manager = rw

测试结果:

用户组@admin,@manager可以检出LTest库且可以修改文件,@develop只能检出文件浏览,不能进行操作;

测试二:

增加内容:

[LTest:/document]

@developers = rw

zhaoliu = r

* =

测试结果:

1)用户组@developers可以检出整个LTest库,对document目录可读写,对old目录只读;

2)用户zhaoliu,首先继承@admin用户组对根目录[/]下所有配置库的读写权限,其次遵守对LTest/document目录的只读权限,所以最后是可以检出整个LTest库,对document目录可读,对old目录可读写;

三.测试含有中文的文件夹权限设置

svn_access_file--权限文件新增

[TestChinaNameFolder:/]

@manager = r

@developers = r

[TestChinaNameFolder:/00项目管理]

@manager = rw

* =

[TestChinaNameFolder:/01用户需求]

@developers = rw

* =

测试结果:

1)用户组@admin继承根目录的读写权限,且TestChinaNameFolder库下的00和01两个子目录都设置了除某固定组外其他无法访问,@admin最终只能看到或checkout出除00和01以外的目录;

2)用户组@manager继承[TestChinaNameFolder:/]库的只读权限,且在子目录00下拥有读写权限,且01设置固定组外其他无法访问,@manager最终对TestChinaNameFolder库下00子目录有读权限,无法看到01子目录;

3)用户组@developers继承[TestChinaNameFolder:/]库的只读权限,且在子目录01下拥有读写权限,且00设置固定组外其他无法访问,@developers最终对TestChinaNameFolder库下01子目录有读权限,无法看到00子目录;

svn权限设置总结:

总的规则:

svn权限是以文件夹作为区分的,svn权限有继承性,但是只以当前位置的权限为使用权限(可以在测试中看出);

详细分析:

1)[/]配置库根目录允许只有管理员有读写权限;

2)[Repository:/]配置库目录的权限会影响用户对此配置库下所有子文件夹的权限;但是某个子文件夹的权限,只对具体设置的某个组或用户有效,若有* = ,则其他用户无法看到此文件夹,若无* = ,则其他用户的权限会继承上层权限,若上层权限没有则此处也没有;

比如:在“单个用户权限测试”测试三中,用户liting对LTest整个库有读写权限,但是对库下面的doucument文件夹只有只读权限,那就只能浏览文件,不能对文件进行修改删除;她对库下面的old文件夹没有权限,在执行检出命令时,也就不会检出old文件夹;

3)* = 在子文件夹中谨慎使用,如果在子文件夹中设置了此权限,就表示设置权限的这个目录除了已有用户对此有对应权限外,其他用户是看不到此目录的,像隐藏起来了;

比如:在“用户组权限测试”测试二中,用户组@manager和@admin继承测试一中的群组权限,对LTest配置库有读写权限,但是对于在测试二中的设置,除了用户组@developer能直接检出document且可进行读写外,其他用户组,不能直接检出该目录,且在LTest根目录下

检出的内容只有old目录,没有document;

4)在设置权限时候,一般[/]根目录给svn管理员开放读写权限,其他设置无权限;对于具体的配置库,针对于相关的用户组设置读写,对于配置库的子目录不需要看到的用户组使用* = 控制;

5)在具体配置库下面拥有只读或者读写权限的用户或组,若某子目录中设置* = 且未给此用户或组设置只读或读写权限,则在浏览或checkout配置库时该用户或组看不到此子目录;

6)在配置svn权限的时候,需要考虑到子目录对上层目录权限的继承性,这样才能精确的配置好权限;

7)如果svn配置库结构有涉及到中文的,必须把权限文件的字符编码转换成UTF-8,权限才会生效:

具体方法:

用UE打开权限文件,选择“文件--另存为--格式--UTF-8 无BOM”,就可以了;


本文标签: 权限 用户 文件 测试 读写