写点什么

TortoiseSVN 使用 - 授权访问

作者:刘大猫
  • 2025-07-03
    黑龙江
  • 本文字数:1923 字

    阅读完需:约 6 分钟

@[toc]

3.4.6 授权访问

总结:


  • 如果是匿名访问(就是不用输入用户名+密码的访问方式),请只开启anon-access = write

  • 如果授权访问,请先设置anon-access = none,然后打开3个:auth-access = write、password-db = passwd、authz-db = authz


注意:必须设置 anon-access = none,否则会代码提交报错失败。


①要设置授权访问就需要创建用户,并为用户设定权限


打开授权访问的配置


[1]打开 D:\DevRepository\Subversion\CRM\conf\svnserve.conf (svnserve.conf 文件: 核心配置文件)




[2]将第 19 行 anon-access = write 注释掉:# anon-access = write


表明该版本库不接受匿名访问


[3]将第 20 行 # auth-access = write 注释打开:auth-access = write


表明该版本库使用授权访问


[4]将第 27 行注释打开:password-db = passwd


表明使用同目录下的 passwd 文件保存用户信息


[5]将第 36 行注释打开:authz-db = authz (authz文件: 权限认证相关)


[6]打开 passwd 文件创建用户 (passwd 文件: 用户密码相关)


tom = 123456jerry = 123456nick = 123456tester = 123456
复制代码



[7]打开 authz 文件:#后面注释的是例子



[/]表示该仓库下的所有路径

[CRM:/oneLayer/1]中 CRM 为仓库名,表示该仓库下的“/oneLayer/1”路径

@developer= rw 表示 developer 该组的所有成员访问权限为可读可写,设置组权限需要用 @符号表示,而直接设置用户权限则不需要添加 @

[CRM:/oneLayer/1]

jerry = rw,表示 jerry 用户只拥有 CRM 仓库下/oneLayer/1 路径下的所有读写权限访问权限,而/oneLayer/1 前面的路径则没有访问权限

*= 因为后面没有写访问权限,所以表示其他人没有访问权限


<1>创建用户组


[groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe @developer = rw
复制代码


<2>指定路径,给用户和用户组授权


# [/foo/bar] # harry = rw # &joe = r # * =屏蔽那些未设定的用户,让它们没有任何权限 [/]@developer = rwtester = r* =[CRM:/oneLayer/1]jerry = rw
[CRM:/oneLayer/2]nick = rw
复制代码


<3>权限的继承性:父目录设置的权限,对子目录同样有效——除非子目录进行 了更为具体的设定(这个没验证过,需博主自己验证下)


[/subDir] userOther = rw * = 
复制代码


这个例子表示当前版本库下的 subDir 目录只有 userOther 有读写权限,其它用户 无任何权限


模拟登录 tom 用户,验证能否提交成功。答案是可以提交。



模拟登录测试用户 tester,验证能否提交成功。答案是不可以提交,因为权限不够。




做一个小测验,需求:假设我的项目结构如图,假设每一个包含 text.txt 的文件夹都是一个真实的项目,且存在多层级结构,我现在想实现tom用户具有 CRM 路径(目前 CRM 路径就是 SVN 的某一仓库的根目录)下的所有读写访问权限,而jerry用户只 CRM/oneLayer/1 路径下的读写权限,而nick用户只有 CRM/oneLayer/2 路径下的读写权限,而tester测试用户只有读权限没有写权限。


  • 这个项目想模拟的就是新建的 tom 用户具有管理员权限,jerry 和 nick 用户只有部分路径的访问读写权限,而测试用户只有读没有写的权限。对应的真实场景就是:我自己搭建了 SVN,我自己创建管理员账户并授权,但是新建别的用户我想控制权限,让他们只有自己项目的访问权限,而别人的项目没有拉取代码的权限,想演练下如何实现。



  • 前提说明:目前 CRM 路径就是 SVN 的某一仓库的根目录,就是对应 auth 配置文件中的[/]

  • passwd 文件


  tom = 123456  jerry = 123456  nick = 123456  tester = 123456
复制代码


  • auth 文件


  [groups]  # 控制新增用户权限  [/]  @developer = rw  tester = r  * =  [CRM:/oneLayer/1]  jerry = rw    [CRM:/oneLayer/2]  nick = rw
复制代码


  • 演练场景1,验证 tom 用户能否 checkout 下载/CRM/oneLayer/1 下的项目 oneLayerProject,如图,答案是可以成功下载,说明它拥有/路径下的所有权限。



  • 演练场景2,验证 nick 用户能否 checkout 下载/CRM/oneLayer/2 下的项目 twoLayerProject,如图,答案是可以成功下载,说明它拥有/oneLayer/2 路径下的所有权限。



  • 演练场景3,验证 nick 用户能否 checkout 下载/CRM/oneLayer/1 下的项目 oneLayerProject,如图,答案是不可以成功下载,说明它没有/oneLayer/1 路径下的所有权限。


本人其他相关文章链接

1.Windows下版本控制器(SVN) - 1、开发中的实际问题+2、版本控制简介2.Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序3.Windows下版本控制器(SVN)-TortoiseSVN使用+权限配置+合并深度介绍+分支介绍4.Windows下版本控制器(SVN)- 配置版本库5.Windows下版本控制器(SVN)-启动服务器端程序6.TortoiseSVN使用-授权访问7.TortoiseSVN使用-TortoiseSVN更换或重置登录用户8.TortoiseSVN使用-合并分支代码9.TortoiseSVN使用-权限配置10.TortoiseSVN使用-合并深度介绍

用户头像

刘大猫

关注

还未添加个人签名 2022-08-23 加入

还未添加个人简介

评论

发布
暂无评论
TortoiseSVN使用-授权访问_人工智能_刘大猫_InfoQ写作社区