Apache 2.2とWebDAVを介して提供される複数のsubversionリポジトリがあります。それらはすべて中央に配置されており、私はこのdebian-administration.orgの記事をベースとして使用しました(ただし、単純なhtpasswdファイルでのデータベース認証の使用はやめました)。
それ以来、私はWebSVNも使い始めました。私の問題は、システム上のすべてのユーザーがさまざまなリポジトリにアクセスできる必要があるわけではないことです。WebSVNのデフォルトのセットアップでは、認証できるすべてのユーザーが許可されます。
WebSVNのドキュメントによると、これを回避する最善の方法は、Subversionのパスアクセスシステムを使用することです。そのため、AuthzSVNAccessFileディレクティブを使用してこれを作成しようと考えました。
ただし、これを実行すると、「403 Forbidden」のメッセージが何度も表示されます。
私のファイルは次のようになります。
ファイルにデフォルトのポリシー設定があります。
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
各リポジトリは、以下のようなポリシーファイルを取得します。
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
default_auth.confファイルには、次のものが含まれています。
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
default_auth.confに2番目のSVNParentPathが必要な理由は完全にはわかりませんが、AuthzSVNAccessFileディレクティブを追加した結果としてエラーメッセージが表示されたため、本日追加しました。
完全に許可されたアクセスファイル
[/]
joebloggs = rw
システムは正常に動作しました(基本的には変更されませんでした)が、次のような制限を追加しようとするやいなや
[sysadmin:/]
joebloggs = rw
代わりに、「Permission denied」エラーが再び表示されます。ログファイルのエントリは次のとおりです。
[Thu May 28 10:40:17 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET websvn:/
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET svn:/sysadmin
これを機能させるには何をする必要がありますか?Apacheの設定が間違っていますか、それともsvnaccess.confファイルの理解が間違っていますか?
私がこれについて間違った方向に進んでいる場合、私は私の全体的なアプローチに特定の愛着を持っていないので、代替案も提供してください。
更新(20090528-1600):
私はこの回答を実装しようとしましたが、それでも適切に機能させることができません。
追加したように、ほとんどの設定が正しいことを知っています
[/]
joebloggs = rw
最初に「joebloggs」がすべての正しいアクセス権を持っています。
しかし、リポジトリ固有にしようとすると、次のようなことをします
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
次に、私が以前持っていたものと同様のエラーで、mickmurphy(joebloggsはまだ機能します)のアクセス許可拒否エラーを受け取りました
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
また、以前にすべてのリポジトリがその下にあることを説明するのを忘れていました
/var/lib/svn/repository
更新(20090529-1245):
まだうまくいきませんが、すべての兆候は、Subversionのパスアクセス制御が適切に機能していないという問題を示しているようです。私の想定では、リポジトリ構造を適切に認識するようにapacheやsvnを設定していない。
これは、「[/]」エントリが完全に機能しているように見えるためです。
また、これはStackOverflowに属している可能性のある質問だと思います。
更新(20090603-1740):
この質問に対するコメントの1つに応えて、subversion自体の私のWebDAVセットアップには/ svn / reposという場所が指定されていますが、websvnは/ websvnに設定されています。