我有一个运行良好的 svn 服务器,它在 Windows 上运行,使用 Apache 进行访问。在原始设置中,每个用户都可以访问所有存储库,但我最近需要授予用户仅访问一个存储库的能力。我取消了 httpd.conf 文件中 AuthzSVNAccessFile 行的注释,并将其指向一个访问文件并设置了访问文件,但当我访问 mydomain.com/svn 时,我得到了 403 Forbidden。如果我重新注释掉这行,一切又恢复正常了。我还确保取消了 LoadModule authz_svn_module 的注释,并验证它指向了正确的文件。
下面是我的 httpd.conf 和 svnaccessfile 的位置部分
httpd.conf (location section only)
<Location /svn>
DAV svn
SVNParentPath C:\svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
Require valid-user
AuthzSVNAccessFile svnaccessfile
</Location>
(从长远来看,我想要一个更复杂的策略,但这样做只是为了测试文件)svnaccessfile
[svn:/]
* = rw
我也尝试了以下针对 svnaccessfile 的操作。
[/]
* = rw
我还会在每个更改之后重新启动服务,以确保更改被采用。
答案1
看来我已经通过将位置标记的开头更改为解决了该问题
区别在于后面的 /
答案2
从上面的答案中过滤掉的是 <Location /svn/>
您还需要:
[/]
在您的 acl 文件中具有适当权限的部分
答案3
这仅当您想允许所有人访问时才有效。
我的 ACL 文件很简单:
[/]
scott = rw
这会产生 403 错误,但如果我更改 ACL 文件,则会出现以下情况:
[/]
* = rw
...允许访问。
仍在努力弄清楚为什么 * 允许访问但特定用户导致 403 错误(我已在 AuthUserFile 引用的 htpasswd 文件中定义了该用户)