AuthzSVNAccessFileでのsvnauthzファイルについて
Subversionにおいてディレクトリ毎のアクセス制御を行うために
AuthzSVNAccessFileディレクティブで指定するsvnauhtzファイル(※)ですが
そのファイル中の設定について少々覚書を。
※:正確にはアクセスファイル、というようです。httpd.confで指定してやれば別にファイル名はsvnauthでもhogeでも構わないのですが大体はsvnauthzにするのが一般的です。
●上位階層の設定より下位階層の設定のほうが有効となる
こういう設定がされている場合
testproject/trunk/01では全員read権限しかありません。
--------------------------------
[testproject:/trunk]
* = rw
[testproject:/trunk/01]
* = r
--------------------------------
当たり前のようですが、意外とわからなくなるので大原則として覺えておきたい仕様です。なお、これはsvnbookでは"詳細に設定されている方が有効となる"という書き方で表現されています。
●ディレクトリ自体を指定する際は末尾は「/」となる
特定の階層について権限設定する際に
[testproject:/trunk/01]ではなく[testproject:/trunk/01/]のように設定すると
testproject/trunk/01/というディレクトリ自体(配下のファイル・フォルダを含まず)について権限設定がされます。
例えば下記のような設定の場合、全ユーザは[testproject:/trunk]の設定が継承されるため
testproject/trunk/01配下のファイル・フォルダについてread/write権限がありますが
testproject/trunk/01 ディレクトリを削除する際にはユーザはread権限しかないため、forbiddenエラーとなります。
--------------------------------
[testproject:/trunk]
* = rw
[testproject:/trunk/01/]
* = r
--------------------------------
ディレクトリ自体に権限設定する需要があまり思い浮かびませんが
例えばディレクトリ名の変更のみを制限したい場合などに使えるかもしれません。
とはいえ、レアなケースだと思いますので、特定の階層以下について権限設定する際には[testproject:/trunk/01/]ではなく[testproject:/trunk/01]のように設定しましょう。
参考にした情報ソース
・Version Control with Subversion
"The thing to remember is that the most specific path always matches first."
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html
・svnbook日本語訳のPDF版を作成してみました