我正在尝试通过 Apache 提供对 SVN 服务器的远程访问。情况可以这样说明:
/root
/public-project
/trunk
/branches
/restricted-project
/trunk
/branches
只有一个存储库,其中包含两个项目。
公开项目任何人都可以查看(只能查看,不能修改)。受限项目只有属于特定组的用户才能读取/修改。配置如下:
<Location "/root">
DAV svn
SVNPath [...]
SVNIndexXSLT [...]
[...]
<LimitExcept PROPFIND OPTIONS REPORT>
require ldap-group CN=SVN Administrators,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/public-project">
<LimitExcept GET PROPFIND OPTIONS REPORT>
require ldap-group CN=Project1 Contributors,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/restricted-project">
require ldap-group CN=Project2 Contributors,OU=Subversion,DC=example,DC=com
</location>
它是否足够安全,或者客人是否有可能从受限项目访问敏感信息?
通过SVN更新公共项目源时,出现以下错误:
无权打开编辑操作的根目录
Apache error.log 显示以下元素:
驱动更新报告编辑器时发生故障 [500,#220000]
未获得打开编辑操作根目录的权限 [500,#220000]至于access.log,它显示SVN客户端发出了一堆
PROPFIND
(response: HTTP 207)和OPTIONS
(response: HTTP 200),最后:“报告/root/!svn/vcc/default HTTP/1.1” 500 241
我应该怎么做才能解决这个问题,即为公共项目启用公共只读访问权限,同时对未经授权的用户隐藏受限访问权限?
注意:授予 GET 权限/root
使访客能够加载公共项目的源代码,但也使公共行为成为默认行为。我更愿意限制访问权限,并仅在包含公共项目的节点上授予访问权限。
答案1
我从头构建了一个新环境,并尝试了它的配置,但看起来仅有的方法是默认将所有内容设置为公开,然后明确限制特定的项目。
从安全角度来看,这完全是愚蠢的,尤其是在创建大量项目的情况下,有时这些项目并非完全自动化,很容易因忘记设置限制而犯错。话虽如此,这也迫使进一步推动自动化,这只会是有益的。
如果有人想试用这些设置,我可以提供当前使用的配置。