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”,就可以了;
版权声明:本文标题:svn权限设置总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703212862h442484.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论