「Subversion」ユーザごとにリポジトリに対する権限を設定する方法
Subversion でリポジトリごとにユーザに権限を設定する方法について調べたので、その時のメモ。
まず、Subversion のインストールを行なう ( なんでインストールからやねんとなりますが、過去のエントリー
にインストール書いたものがなかったのでご了承ください )。今回は yum でやった。
yum install subversion
リポジトリを作成しておく。
mkdir /var/www/svn/repo1 svnadmin create /var/www/svn/repo1
適当な作業ディレクトリで "リポジトリのチェックアウト" - "ファイルの追加" - "コミット" を行なっておく。
svn checkout file:///var/www/svn/repo1/ echo aaa > aaa.txt echo bbb > bbb.txt svn add aaa.txt bbb.txt svn commit -m "add aaa.txt bbb.txt"
Apache と連携して使いたいので、その設定を行なう。Apache は CentOS に同梱のものを使います。
yum で mod_dav_svn をインストールする。
yum install mod_dav_svn
Apache の設定ファイル ( /etc/httpd/conf.d/subversion.conf ) を以下のように編集。
サンプル的な記述があらかじめあるので、そいつベースに必要な部分を書き換える感じで。
<Location /repos> DAV svn SVNParentPath /var/www/svn # Limit write permission to list of valid users. # 読み取りに関しても認証したいのでコメントアウトしておく #<LimitExcept GET PROPFIND OPTIONS REPORT> # Require SSL connection for password protection. # SSLRequireSSL AuthType Basic AuthName "Subversion Test" AuthUserFile /var/www/svn/.htpasswd Require valid-user AuthzSVNAccessFile /var/www/svn/authzsvn.conf #</LimitExcept> </Location>
/var/www/svn/.htpasswd とかをここに置くのはよくないと思うけど、まぁ検証なのでわかりやすい場所に。
.htpasswd にユーザ hoge を追加。
htpasswd -b -c -m /var/www/svn/.htpasswd hoge hoge
authzsvn.conf に、ひとまず以下の設定を追記
[/] hoge = rw
上記設定が終わったら、Apache を起動して Web ブラウザから "http://XXX.XXX.XXX.XXX/repos/repo1"
にアクセスしてみる。ちゃんと Basic 認証が機能してユーザ/パスワードを入力するとリポジトリが見れる。
ここからが本題 ( 長かった ) のユーザごとにリポジトリの権限を設定する方法について。
こんな感じの設定を行なう。
・hoge は repo1 の読み込み/書き込みが可能 repo2 へはアクセスできない
・uga は repo1 へはアクセスできない repo2 の読み込みは可能
ユーザ uga を追加
htpasswd -b -m /var/www/svn/.htpasswd uga uga
authzsvn.conf を以下のように書き換える。
[repo1:/] hoge = rw [repo2:/] uga = r
ちゃんと設定できてそうな感じ。
また、グループごとに権限を設定することも可能みたい。
例えば、上記の権限と同様で hoge が dev1 グループに uga が dev2 グループの所属している場合、
以下のような設定も可能。ユーザごとに設定する手間が省けるので楽ですな。
[groups] dev1 = hoge dev2 = uga [repo1:/] @dev1 = rw [repo2:/] @dev2 = r
長くなりましたが、以上です。