我在CentOS 7.4上托管了apache subversion 1.7.14并且无法获得基于路径的授权,以便限制组到特定分支,可以从apache Web服务器导航到分支。
示例结构是:
/svn/repo/projA
/svn/repo/projA/trunk
/svn/repo/projA/branches
/svn/repo/projA/branches/branch1
/svn/repo/projA/branches/branch2
/svn/repo/projB
/svn/repo/projC
我有几组用户,例如:
[groups]
svn-group1 = ...
svn-group2 = ...
我的目标是明确地将svn-group2限制为/ svn / repo / projA / branches / branch1,并且不能访问任何其他分支,例如:
[/]
* =
@svn-group1 = rw
[repo:/projA/branches/branch1]
@svn-group2 = rw
但是,当导航到https://svn.example.com/repo/projA时,svn-group2用户将收到Forbidden错误。只有他们转到完整的网址https://svn.example.com/repo/projA/branches/branch1,他们才能获得访问权限。理想情况下,我希望svn-group2看到所有父级离开根目录,以便他们知道"他们可以从https://svn.example.com访问的内容。
我可以通过明确排除每个兄弟叶子来获得正确的行为:
[/]
* =
@svn-group1 = rw
[repo:/projA/branches/branch1]
@svn-group2 = rw
[repo:/projA]
@svn-group2 = r
[repo:/projA/trunk]
@svn-group2 =
[repo:/projA/branches/branch2]
@svn-group2 =
[repo:/projB]
@svn-group2 =
[repo:/projC]
@svn-group2 =
这甚至可以让用户甚至看不到来自https://svn.example.com/repo的projB和projC的链接。只能看到projA,后面只有分支,后面只有branch1。
但是,这并不能保证svn-group2只能看到branch1。我想保证svn-group1是否创建了一个新的分支,svn-group2默认不会看到这个。
我找到了一些提示:glob:带有一些通配符功能的规则,但我无法让它工作。我可以想象下面的东西,通配符不包括兄弟分支。
[:glob:repo:/]
@svn-group2 = r
[:glob:repo:/*/]
@svn-group2 =
[repo:/projA]
@svn-group2 = r
[:glob:repo:/projA/*/]
@svn-group2 =
[repo:/projA/branches/]
@svn-group2 = r
[:glob:repo:/projA/branches/*/]
@svn-group2 =
[repo:/projA/branches/branch1]
@svn-group2 = rw
谢谢!
答案 0 :(得分:2)
好的,我会尝试为你澄清一些事情。
select * from dEmail where date < '2017-06-01'
第一个select * from dEmail where date < '2017-06-01' and not date > '2017-06-01'
不是必需的。只有在有权访问的父目录时,才需要指定禁止访问者。
理想情况下,我希望svn-group2看到所有父级离开根目录,以便他们“知道”他们有权访问https://svn.example.com
我可以看到你想要的思路,不幸的是,除非你所说的明确禁止他们在创建的每个子目录中访问,否则这是不可能的。当你给第2组读取访问projA的基本URL的那一刻,它们本身就具有对你创建的任何新子目录的读访问权,这意味着你创建了任何新的分支/标签,他们将看到你更新authz文件要这样做。
我还没有尝试过通配符,而且我目前无法访问我的服务器,但是当我回到家时,我可以测试一下,以便更方便地执行此操作。