PR

SVNリポジトリのアクセス権限について

1. はじめに

SVNで読み取り専用のユーザーを作成することになり、アクセス権限の設定を行うことになったのでその手順を覚書として残します
環境は CentOS7 で Apache を使用しています

2. Apache の設定

/etc/httpd/conf.d/subversion.conf に以下のように設定を追加します

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

SVNリポジトリ用のディレクティブに AuthzSVNAccessFile を追加します

<Location /svn>
    DAV svn
    SVNParentPath /var/www/svn
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /etc/svn-auth-file
    AuthzSVNAccessFile /etc/svn-access-file
    Require valid-user
</Location>

3. アクセス権限の設定

/etc/svn-access-file に以下のように設定を追加した場合

[groups]
readonly = user1, user2
readwrite = user3, user4

[/]
* = rw

[project1:/]
* = 
@readonly = r
@readwrite = rw

/ はリポジトリ全体を指し、project1 はリポジトリ名です
* = rw はリポジトリ全体に対して全てのユーザーに読み書き権限を与えます

[project1:/]project1 リポジトリに対しての設定です
* = はリポジトリに対して全てのユーザーにアクセス権限を与えません
@readonly = rreadonly グループに対して読み取り権限を与えます
@readwrite = rwreadwrite グループに対して読み書き権限を与えます

4. 動作の確認

/etc/svn-auth-file にユーザー名とパスワードを設定して、アクセス権限の設定が正しく行われているか確認します
ユーザーの作成は省略します

user1, user2 はリポジトリのチェックアウト及びアップデートは成功しますが、コミットは失敗し、user3, user4 はリポジトリのチェックアウト及びアップデート、コミットが成功することを確認します

5. まとめ

subversion.conf の各ディレクティブに対して AuthzSVNAccessFile を追加する場合、リポジトリ毎にファイルを分けておいた方が管理しやすそうです
また、優先順位の関係で記述の順番に注意する必要があるため、グループを使用しユーザーを纏めると管理しやすくなります
該当リポジトリが全ユーザー読み書き対象であれば AuthzSVNAccessFile の設定は不要なので subversion.conf からコメントにしておけば設定の必要はありません

A. 参考サイト

SVNのAuthzSVNAccessFileについて

B. 参考書籍

コメント