我一直在尝试寻找解决这个问题的方法。我觉得我已经接近成功了,但是已经很晚了,而且我很累。
我试图将特定用户锁定到单个目录(本例中为“/QA”)并拒绝我的 QA 测试人员访问其余存储库。但是,我没有注意到我的错误,因为出于某种原因,“测试人员”组可以访问整个存储库(这是不可取的)。
以下是我的 apache 配置。
授權:
[groups]
admins = admin1
coders = user1, user2,
designers = user3
testers = user4
[/]
* =
@admins = rw
[myrepo:/]
* =
@testers =
@designers =
@coders = rw
[myrepo:/QA]
* =
@testers = r
@coders = rw
@designers = rw
Apache 配置:
<Location /svn>
LimitXMLRequestBody 0
LimitRequestBody 0
DAV svn
SVNParentPath /home/svnuser/repositories
<IfModule mod_authz_svn.so>
AuthzSVNAccessFile /home/svnuser/svn/authz
</IfModule>
AuthUserFile /home/svnuser/svn/passwd
AuthType Basic
AuthName "My repos"
Require valid-user
</Location>
其他检查:
- dav && dav_svn 已加载到 apache 中。
- 密码文件工作正常。
- 我怀疑这是否重要,但我确实通过本地 nginx 安装代理非 http 端口上的 svn,因为我已经安装了它并且不想与端口冲突。SVN 工作正常,所以我认为这不是问题。
注意:不确定这是否是serverfault
或stackoverflow
材料。
答案1
- 如果你只保留重载访问字符串,则可以使用具有相同功能的较短版本的 authz
[groups] admins = ... coders = ... designers = ... testers = ... [/] * = @admins = rw [myrepo:/] @coders = rw [myrepo:/QA] @testers = r @designers = rw
权限从父节点继承,你只需要在每个节点中写入来自父节点的更改
- 如果用户仅属于@testers,它(即使在您的配置中)也只能读取/myrepo/QA 和 childs