我试图拒绝用户访问 SVN 存储库中的某个路径。
根据文档这是通过将用户名设置为空来实现的。
[calc:/branches/calc/bug-142/secret] harry =
另外,虽然文档中没有提到,但我成立这条信息:
如果我没记错的话,如果您使用的是 SVN 1.5 或更高版本,那么您对存储库根目录的全局读取权限不能低于。
据称固定的在 1.7 中,我仍然决定首先为每个人提供读取访问权限,然后拒绝对一条路径的访问。
这是我的 SVN vhost 的配置:
<VirtualHost *:443>
<Location />
DAV svn
SVNParentPath /var/repositories/
AuthType Basic
AuthName "Repositories"
AuthUserFile /etc/apache2/passwd/rep
Require user andre
# Google: svn secure connection truncated
SVNPathAuthz Off
</Location>
<Location /test/>
AuthUserFile /etc/apache2/passwd/rep-test
Require valid-user
SVNPathAuthz On
AuthzSVNAccessFile /etc/apache2/passwd/authz-test
</Location>
</VirtualHost>
存储库内https://svn/test/
有一个目录test2
。
这是我当前的authz-test
文件,无法阻止用户andre
访问目录test2
及其内容:
[/]
* = rw
[/test2]
andre =
[/test2/]
andre =
[test/test2]
andre =
[/test/test2]
andre =
[test/test2/]
andre =
[/test/test2/]
andre =
[test:/test/test2]
andre =
[test/:/test2]
andre =
[test:/test2/]
andre =
[test/:/test2/]
andre =
[test:test2]
andre =
[test/:test2]
andre =
[test:test2/]
andre =
[test/:test2/]
andre =
当我注释掉 时* = rw
,对存储库的访问立即被拒绝,因此至少文件没有被完全忽略。我使用的是 Subversion 1.7.8。
答案1
- 首先
Locaton
是非常糟糕的想法! - 其次
Locaton
你没有任何 SVNParentPath|SVNPath - 位置损坏。如果使用 SVNParentPath 并创建test2 存储库[test2:/]
将是正确的路径