![SVN,根据 authz 签出文件夹](https://linux22.com/image/755161/SVN%EF%BC%8C%E6%A0%B9%E6%8D%AE%20authz%20%E7%AD%BE%E5%87%BA%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我已经在 freebsd 上设置了 svnserve 服务,并试图找出控制身份验证的最佳方法。
我有根文件夹 A 和子文件夹 A1、A2、A3
A--
|-AdminFolder
|-Project1
|-Project2
有 2 个角色组:g_admin 和 g_pm。我想知道如何配置 authz 以满足以下场景:
- 作为管理员,我可以签出所有具有读/写权限的文件夹。
- 作为项目经理,我只能签出 Projectn 文件夹,而看不到“AdminFolder”
- 我希望所有用户都使用相同的 SVN 路径 (SVN://host/A)
我尝试了以下 authz 配置:
[/]
g_admin = rw
* = r
[/A/AdminFolder]
g_admin = rw
* = r
[/A/Project1]
g_admin = rw
g_pm = rw
[/A/Project2]
g_admin = rw
g_pm = rw
但是 g_pm 将会看到 / 下的所有内容...
答案1
重新阅读相关部分SVN 书籍(版本略微过时,但可用)并修复一些(明显的)配置部分
由于您的要求中有“2 个角色组”,因此您能添加(为了将来更加灵活)群组部分,例如
[groups]
admins = user1, user2
pms= user3, user4
并在稍后的规则中使用组的引用
复制具有相同权限的规则是无用的,因为 authz-rules 是从上述路径继承的。
结果,你会得到类似的结果(未经测试,只是写下来)
[groups]
admins = user1, user2
pms = user3, user4
[/]
@admins = rw
* = r
[/A/AdminFolder]
* =
[/A/Project1]
pms = rw
[/A/Project2]
pms = rw