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 = r
は readonly
グループに対して読み取り権限を与えます@readwrite = rw
は readwrite
グループに対して読み書き権限を与えます
4. 動作の確認
/etc/svn-auth-file
にユーザー名とパスワードを設定して、アクセス権限の設定が正しく行われているか確認します
ユーザーの作成は省略します
user1, user2 はリポジトリのチェックアウト及びアップデートは成功しますが、コミットは失敗し、user3, user4 はリポジトリのチェックアウト及びアップデート、コミットが成功することを確認します
5. まとめ
subversion.conf
の各ディレクティブに対して AuthzSVNAccessFile
を追加する場合、リポジトリ毎にファイルを分けておいた方が管理しやすそうです
また、優先順位の関係で記述の順番に注意する必要があるため、グループを使用しユーザーを纏めると管理しやすくなります
該当リポジトリが全ユーザー読み書き対象であれば AuthzSVNAccessFile
の設定は不要なので subversion.conf
からコメントにしておけば設定の必要はありません
コメント