Subversion 1.10で認可され(authorize)ない
1.9から1.10にサーバをバージョンアップしたら問題が発生した。
svn up なり svn list なりを行うと、
svn: E175013: Access to '/path/to/hoge/trunk' forbidden
と出てアクセスできない。HTTP(S)経由なので、LogLevel debug
としてログを追ってみると最後に
Access denied: 'admin' OPTIONS hoge:/trunk
となっていて、認証(authentication)まではうまくいっている。
認可用ファイルは以下の通り
[/] admin = rw [hoge:/] user = rw
こうしておくと、今までは admin ユーザは全リポジトリにアクセスできていた。
どうも1.10から一番詳しく一致するレコードのみ見るようになった風に思える。確かにその方がより細かくアクセス制御はできるのだろうが、リリースノートには認可周りの修正と強化をしたとあるだけで、そのような非互換の変更があったとは書いていない(か、気付かなかった)。
対策1 新機能の :glob:を使う
[/]
を [:glob:/*]
としたらアクセスできるようになった。
より深いパスの指定が他にある場合は、それより優先させるために [:glob:/**]
とする必要があるはず。
一番単純で admin としての意図に近いのでこの方法にした。大量にファイルを舐める時にパフォーマンス的には悪いかもしれない。