3

Apache DAV と LDAP を提供する SVN リポジトリをセットアップしました。リポジトリ全体の読み取り/書き込み権限を持つユーザーでリポジトリにアクセスすると、すべてがスムーズに機能します。

リポジトリには多くのプロジェクトがあり、次のようになります。

repo_src
 \a
 \b
 \c
 \d
 .. etc..

特定のユーザー「A」に特定のサブディレクトリ「a」へのアクセスを許可する必要がありますが、その親ディレクトリや兄弟 (b、c、d など) へのアクセスは許可しません。

パスベースの承認に関する本「Subversion によるバージョン管理」(http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.serverconfig.pathbasedauthz) を読みました。私はそこに指定されていることを正確に行いました: 私はファイル svn.authz を次のように編集しました:

[src_repo:/a]
A = rw

[src_repo:/]
root = rw

Apache では、svn 構成ファイルは次のようになります。

<Location /svn>
DAV svn

SVNParentPath /data/repos/
AuthName "Zentyal LDAP user required"
AuthType Basic
AuthBasicProvider ldap file
AuthBasicAuthoritative On
AuthzLDAPAuthoritative off

AuthLDAPURL ....
AuthLDAPBindDN ....
AuthLDAPBindPassword ...
AuthUserFile /dev/null
uthzSVNAccessFile /etc/apache2/svn.authz

require valid-user

</Location>

ユーザー A としてWEB インターフェイス ( ) を介してサブディレクトリ src_repo/a にアクセスすると、ディレクトリhttp://host/svn/ src_repo/aの内容とそのファイルを読み取ることができます。しかし、TortoiseSVN を使用してディレクトリを参照したり、 http://host/svn/src_repo/a「svn checkout http://host/svn/src_repo/a」を使用してコンテンツをチェックアウトしようとすると、次のメッセージが表示されます。

svn: E175002: '/' に対する PROPFIND 要求に応答して、サーバーが予期しない戻り値 (405 Method Not Allowed) を送信しました

明らかに、TortoiseSVN と svn クライアントは '/' にアクセスしようとしています (これは意図したものではありません)。

サブディレクトリへのアクセスのみを許可するようにsvnサーバーをセットアップするにはどうすればよいですか? WEB アクセスがコマンドラインや TotoiseSVN アクセスと異なるのはなぜですか?

4

2 に答える 2

3

本を読み直してください: あなたは authz-file 仕様のいくつかの明らかなことを見落としています

私のレポコレクションを使用した短い答えと、例としてのauthz-fileです

[/]
*=r

[Elgg-Russian:/]
@Coders=rw

[Elgg-TranslationRU:/]
@Translators=rw

[Hello:/]
lazybadger=rw

[Hello:/trunk]
lukoie=rw

[groups]
Coders=irrelevant,to,question
Translators=irrelevant,to,question
  • 別のセクションで(ルートとして)定義されたレポコレクションのルートがあります
  • 私は省略形「任意のユーザー」を使用します - *
  • 省略形の「アクセスなし」は使用しませんが、空の文字列として存在します。*=どのセクションでもアクセス不可を意味します
  • 3 つのプロジェクトに 1 つの共有リポジトリではなく、3 つのプロジェクトに 3 つのリポジトリがありますが、単一のリポジトリの場合でも (SVNParentPath のため) / セクションから開始します
于 2012-10-24T02:26:05.780 に答える
0

これは、svn クライアント キャッシュの一時的な問題だったようです。今日、同じ構成が機能しました。以前に何が悪かったのか知りたいのですが、確実に知る方法はありません。

于 2012-10-24T15:47:10.297 に答える