Apache 2.2 の SVN エラー: 「禁止 このサーバーの /repos にアクセスする権限がありません」

Apache 2.2 の SVN エラー: 「禁止 このサーバーの /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 が permissive に設定されているため、var/www/html/index.html にある localhost/index.html ファイルを正常に表示できます。

同様の問題に関するフォーラムの投稿を20件ほど読みましたが、役に立ちませんでした。

どのようなアイデアでも歓迎します!

編集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リポジトリが1つだけ含まれているようです。この場合、

SVNPath /var/www/svn/repos

複数のリポジトリがある場合にのみ、SVNParentPath を使用する必要があります。各リポジトリは、ここで構成するディレクトリのサブフォルダーに配置する必要があります。

したがって、親ディレクトリに設定します。

SVNParentPath /var/www/svn

または、設定をそのままにして、現在のリポジトリをサブディレクトリに移動します(例:/var/www/svn/repos/myRepo)。

mod_dav_svnの使用に関する詳細については、mod_dav_svn の SVN ブック セクション

答え2

まず、ディレクトリ SVNParentPath /var/www/svn/repos が存在するかどうかを確認します。次に、サブディレクトリがあるかどうかを確認します。独自のデータベースを持つリポジトリ ディレクトリがあるはずです。ディレクトリが空であるかサブディレクトリがない場合は、svnadmin コマンドを使用してリポジトリを作成します (マニュアルを参照)。作成後も問題がまだ存在する場合は、すべてのディレクティブ AUTH* をコメント アウトし、Apache を要求して再起動します。アクセスは匿名になりますが、認証に問題があるかどうかを確認します。アクセスが可能な場合は、認証に問題があります。これを構成する必要があります。Apache のマニュアルを読み、基本認証の AuthUserFile /etc/svn-auth-conf を管理する方法を学ぶ必要があります。問題 (コメント アウトされた認証を使用) がまだ存在する場合は、ファイル アクセス権に問題があります。Apache サーバーが使用するユーザー名への読み取り/書き込みアクセスを構成します。ps auxww でそのユーザーがわかります。グループ番号は /etc/passwd ファイルから取得します。グループ名は /etc/group ファイルから取得します。この後、チェックアウト/更新とコミットができるようになると、認証に関する問題を解決できます。レシピはたくさんあります。Google に「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

関連情報