ホーム > 日記 > Subversionのリポジトリ公開設定いろいろ

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
カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。