我已经设置了一个使用Apache DAV和LDAP服务的SVN存储库。 当我使用对整个存储库具有读/写权限的用户访问存储库时,一切都很顺利。
存储库有很多项目,如下所示:
repo_src
\a
\b
\c
\d
.. etc..
我需要给某个用户“A”访问某个子目录“a”但不能访问其父目录或其兄弟姐妹(b,c,d等)
我阅读了有关基于路径的授权的“使用Subversion进行版本控制”(http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.serverconfig.pathbasedauthz)这本书。 我完成了那里指定的内容:我用以下内容编辑了文件svn.authz:
[src_repo:/a]
A = rw
[src_repo:/]
root = rw
在Apache中,svn配置文件如下所示:
<Location /svn>
DAV svn
SVNParentPath /data/repos/
AuthName "Zentyal LDAP user required"
AuthType Basic
AuthBasicProvider ldap file
AuthBasicAuthoritative On
AuthzLDAPAuthoritative off
AuthLDAPURL ....
AuthLDAPBindDN ....
AuthLDAPBindPassword ...
AuthUserFile /dev/null
uthzSVNAccessFile /etc/apache2/svn.authz
require valid-user
</Location>
当我通过WEB界面(http://host/svn/ src_repo/a
)作为用户A访问子目录src_repo / a时,我可以读取目录及其文件的内容。但是当我尝试使用TortoiseSVN浏览目录http://host/svn/src_repo/a
或使用“svn checkout http://host/svn/src_repo/a
”检出内容时,我收到此消息:
svn:E175002:服务器发送了意外的返回值(405 Method Not 允许)响应PROPFIND请求'/'
显然TortoiseSVN和svn客户端正在尝试访问'/'(这不是故意的)。
如何设置svn服务器以仅允许子目录访问? 为什么WEB访问不同于命令行或TotoiseSVN访问?
答案 0 :(得分:1)
请重新阅读本书:你忽略并遗漏了authz文件规范中的一些明显的东西
使用我的repo collection及其authz文件作为示例的简短回答
[/]
*=r
[Elgg-Russian:/]
@Coders=rw
[Elgg-TranslationRU:/]
@Translators=rw
[Hello:/]
lazybadger=rw
[Hello:/trunk]
lukoie=rw
[groups]
Coders=irrelevant,to,question
Translators=irrelevant,to,question
*=
表示无法访问答案 1 :(得分:0)
这似乎是svn客户端缓存的临时问题。今天,相同的配置工作。我真的很想知道以前出了什么问题,但没有办法确定。