我有一个私有文件的 Subversion 存储库,由 Apache 通过 HTTPS 使用dav_svn 提供服务。我想让单个域中的用户使用 HTTP 从此存储库中读取单个文件。我该如何编写这样的覆盖?当前配置:
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
这似乎是一个旧的,但它在 RSS 提要中弹出,所以..
如果我正确理解了这个问题,您只想覆盖一个文件的身份验证。
正如katriel所说,使用 Satisfy 指令允许您指定备用权限。在 Files 指令中使用它会将覆盖限制为特定文件。这将不允许提交,因为只有一个文件无需身份验证即可访问。您始终可以确保使用 pre-commit 或 start-commit 钩子。
您可以尝试在同一目录上同时使用身份验证和允许、拒绝访问控制。使用“满足”您可以“或”它们两者。使用 authz 文件,您可以允许对存储库中某个路径的只读访问它看起来像:
并在 authz 文件中使用
这不是一个完美的解决方案,但没有其他真正的方法可以将域排除在身份验证之外
我认为在任何情况下将存储库公开给匿名提交都不是一个好主意。您可能想尝试更精细的设置,使用提交后挂钩执行更新并通过具有特定子网或域的只读访问权限的别名公开该目录:
例如在 /var/lib/svn/repos/hooks/post-commit :
在你的 httpd.conf
YMMV