Ubuntu 10.04 LTS 64bitインストールメモ/その4(Subversion,(AuthUserFile,AuthzSVNAccessFile))

自分用メモです。
Ubuntu 10.04 LTS 64bitインストールメモ/その2 - ttmmrr(@o_tmr)の日記で放置してたsubversion+apache2の認証

dav_svn.conf

以前の/etc/apache2/mods-available/dav_svn.confを編集し、

  • コメントアウト[AuthzSVNAccessFile以外]を解除(先頭の#を削除)
  • Require valid-userを追記

する。

<Location /svn>
DAV svn
 SVNParentPath /var/lib/svn
 SVNListParentPath on
 AuthType Basic
 AuthName "Subversion Repository"
 AuthUserFile /etc/apache2/dav_svn.passwd
 AuthzSVNAccessFile /etc/apache2/dav_svn.authz
 Require valid-user
</Location>

AuthUserFile dav_svn.passwd

apache2-utilsパッケージに入っているhtpasswdというコマンドを使用する。
まずはダミーで、「hogeユーザのパスワード'hoge'」を登録し、「tarouユーザのパスワードを'tarou'」で登録する

sudo su -
cd /etc/apache2
htpasswd -cb /etc/apache2 hoge hoge
htpasswd -b /etc/apache2 tarou tarou

# -cオプションはファイルを作成するときだけ使用する。

ダミーのhogeユーザを削除する

htpasswd -D dav_svn.passwd hoge

おまけ

ユーザ名一覧のテキストファイルを準備しておいて、初期パスワードを一括で生成できると便利。
ここではdav_svn_users.txtというファイルに一行に一ユーザ名が書かれているとする。

tarou
jirou
naoto

コマンドは

for n in `cat dav_svn_users.txt` ; do htpasswd -b dav_svn.passwd $n $n; done

とする。

AuthzSVNAccessFile dav_svn.authz

AuthzSVNAccessFileで指定するファイルには

を記述します。
詳しくは
Subversionのインストールと設定(Apache編)を参考

#リポジトリ:repos 内の/branches/doc/bug-1のアクセス権を設定します。
#hogeは読み書き、
#fugaは読み込み、
#mageはアクセス不可です。
[repos:/branches/doc/bug-1]
hoge = rw
fuga = r
mage = 

#全てのユーザーは/branches/doc/に読み込みのアクセスが可能です。
[repos:/branches/doc/]
* = r

#上記でfugaは/branches/doc/bug-1に読み込みのみのアクセスしかありませんが、
#その下のact-1以下のディレクトリではこちらの設定が優先されます。
[repos:/branches/doc/bug-1/act-1]
fuga = rw

# /branchesディレクトリへのアクセスを禁止します。
[/branches]
* = 

apache2を再起動。

sudo /etc/init.d/apache2 restart

だけど

パスワード認証はうまくいったけど、AuthzSVNAccessFileによる読み書きの権限がうまくできない。
なんでかな?
orz