SVN 与 Apache 2.2 错误:“禁止您无权访问此服务器上的 /repos”

SVN 与 Apache 2.2 错误:“禁止您无权访问此服务器上的 /repos”

我一直在关注本 svn 安装指南当我尝试通过 访问我的测试存储库时http://localhost/repos,我成功进行了身份验证,但随后我得到了以下信息:

"Forbidden You don't have permission to access /repos on this server"

这是我的 subversion.conf 文件:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so


<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn/repos
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      AuthType Basic
      AuthName "Subversion repos"
      AuthUserFile /etc/svn-auth-conf
      Require valid-user
#   </LimitExcept>
</Location>

我的路径是 /var/www/svn/repos,这是我的权限

[root@localhost svn]# ls -la repos/
total 32
drwxr-xr-x. 6 apache apache 4096 Aug 24 11:42 .
drwxr-xr-x. 3 root   root   4096 Aug 24 11:42 ..
drwxr-xr-x. 2 apache apache 4096 Aug 24 13:50 conf
drwxr-sr-x. 6 apache apache 4096 Aug 24 11:42 db
-rwxr-xr-x. 1 apache apache    2 Aug 24 11:42 format
drwxr-xr-x. 2 apache apache 4096 Aug 24 11:42 hooks
drwxr-xr-x. 2 apache apache 4096 Aug 24 11:42 locks
-rwxr-xr-x. 1 apache apache  229 Aug 24 11:42 README.txt

如果我转到 localhost/repos/README.TXT,我会收到此消息。

<D:error><C:error/><m:human-readable errcode="20">
Could not open the requested SVN filesystem
</m:human-readable></D:error>

可以使用任何其他文件名来errcode ="2" 代替。

selinux 设置为宽容,我可以正常看到位于 var/www/html/index.html 的 localhost/index.html 文件。

我已阅读过一些有类似问题的 fozen 论坛帖子,但无济于事。

任何想法,将不胜感激!

编辑1:

我编辑了我的 subversion.conf 文件以进行更改SVNParentPath /var/www/svn/reposSVNParentPath /var/www/svn但似乎没有效果。

编辑2:

brain99 成功了。更改为Location />已解决问题,现在我得到了repos - Revision 0: /

Powered by Subversion version 1.6.11 (r934486).

答案1

似乎您混淆了 SVNPath 和 SVNParentPath 指令。

从您发布的内容来看,它似乎/var/www/svn/repos包含一个存储库。在这种情况下,使用

SVNPath /var/www/svn/repos

仅当您有多个存储库时,才应使用 SVNParentPath。每个单独的存储库都应位于您在此处配置的目录的子文件夹中。

因此,要么将其设置为父目录:

SVNParentPath /var/www/svn

或者保留原有配置并将当前存储库移动到子目录,例如 /var/www/svn/repos/myRepo

有关 mod_dav_svn 使用的更多信息,请查看SVN 书籍中关于 mod_dav_svn 的部分

答案2

首先,检查目录 SVNParentPath /var/www/svn/repos 是否存在。接下来,是否有子目录?应该有具有自己数据库的存储库目录。如果目录为空或者没有子目录,请使用 svnadmin 命令(调用手册)创建任意存储库。创建后问题仍然存在?然后注释掉所有指令 AUTH* ,然后重新请求并重新启动 apache。访问将是匿名的,但您将检查授权是否存在问题。当可以访问时,授权就是问题。您必须对其进行配置。您必须阅读 apache man 并学习如何管理 AuthUserFile /etc/svn-auth-conf 以进行基本授权。如果问题(注释掉 auth)仍然存在,则问题出在文件访问权限上。配置对 apache 服务器使用的用户名的读/写访问权限。ps auxww 告诉您该用户是什么。您将从 /etc/passwd 文件中获得组号。您将从 /etc/group 文件中获得组名。在此之后,当您能够签出/更新并提交时,您可以解决授权问题。有很多方法。我在谷歌上输入问题“svn 创建我的第一个存储库”,得到了很多答案。例如第一个是: http://queens.db.toronto.edu/~nilesh/linux/subversion-howto/ 试试这个:)

顺便说一句。centos 是类似 redhat 的 Linux 发行版。您可以通过 /etc/init.d/httpd start/stop 重新启动 apache。查看文件 /etc/apache 或 /etc/httpd 中写入了什么(取决于 Linux 发行版和默认 apache 配置)。

答案3

尝试这个选项:SVNListParentPath on

相关内容