Subversionのリポジトリ公開設定いろいろ
やりたかったこと。
- HTTPは一部公開してリードオンリー
- HTTPSは認証必須、ユーザー単位で権限付与
SVNParentPathを設定すると、下位のディレクトリを個別に設定しなくて楽なのですが、SVNParentPath自体にアクセスすると403になる。
SVNListParentPathを設定すると下位ディレクトリ一覧を表示できる。
しかし、AuthzSVNAccessFileと相性が悪くLocationを「/」で終わらせないとダメ。
そうなると、/reposでアクセスした際に404となるので、Redirectさせる。
以上、こんな感じになりました。
/etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
/etc/httpd/conf.d/vhosts-example.com.conf
<VirtualHost *:80>
# 省略
<Location /repos>
DAV svn
SVNParentPath /var/www/repos
AuthzSVNAccessFile /var/www/repos/http.access
</Location>
</VirtualHost>
<VirtualHost *:443>
# 省略
RedirectMatch ^(/repos)$ $1/
<Location /repos/>
DAV svn
SVNParentPath /var/www/repos
SVNListParentPath On
AuthzSVNAccessFile /var/www/repos/ssl.access
AuthType Basic
AuthName "example.com Subversion Repository"
AuthUserFile /var/www/htpasswd
AuthGroupFile /dev/null
Require valid-user
</Location>
</VirtualHost>
/var/www/repos/http.access
[/] * = r [hoge:/] * =
/var/www/repos/ssl.access
[groups] admin = cockok devel = cockok,abc system = redmine [/] @admin = rw @system = r * = [hoge:/] @devel = rw
カテゴリー: 日記