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 アクセスと異なるのはなぜですか?