認証ユーザーのみアクセス可能にする
認証はTracと同じの使って1つで済むようにする
認証
認証方式は2通り
BasicかDigest
BasicよりもDigestの方が安全性が高い
Basic認証はパスワードなどが平分でネットワークを流れてしまうが、
Digest認証は暗号化するため
デフォルトインストールで設定が必要なファイルは以下
/etc/apache2/mods-available/dav_svn.conf
ここに参考ドキュメントとか設定とかいろいろ書いてあるので、以下のように追加、修正する
<Location /svn/> ←リポジトリを多数管理する場合、ここでsvn/としないと上手くいかない
DAV svn
SVNParentPath リポジトリへのパス(リポジトリが1つの場合はSVNPath)
SVNListParentPath on リポジトリが1つの場合には不要
AuthType Digest
AuthName Tracの設定と同じ
AuthUserFile Tracの設定と同じ
AuthzSVNAccessFile /etc/apache2/dav_authz.conf
Require valid-user
</Location>
dav_authz.confは作成しないと無い
アクセス制限用ファイル
設定内容は以下みたいにする(Trac Lightningを参照した)
構成は”リポジトリの上位の場所/svn/SampleProject”
LocationのSVNParentPathで上記のアドレスを記述
[/]
* = r
[SampleProject:/SampleProject]
* = rw
クライアントのEclipseからコミットしようとしたらエラーになる・・・orz
/var/log/apache2/error.logに
... Digest: user UserNAme:password mismatch: /svn/SampleProject/!svn/act/.... [500, #0]
... Could not begin a transaction [500 #3]
... Dan't open file '/var/liv/svn/SampleProject/db/txn/xun-crrent-lock': Permission denied [500 #13]
とかエラーが吐き出されていた
とりあえずgoogleさんに聞いてみたら
sudo chmod -R 777 /var/lib/svn/SampleProject/
ってやってみて、というのでやってみたらコミットできてしまった
なんでなのか後に調べる
↑
これだと全てのアクセスに対して全て許可しているのでコミットできるようになるが、
/var/log/apache2/error.logにはエラーが残っている
"Permission denied"はファイルアクセス許可がないエラーなので、その辺が間違っている。
1点はAuthzSVNAccessFileの設定が間違っていた。
まずファイルの場所と名前を変更。
"/リポジトリ/svnathz"
内容的は最終的には以下に設定した
[groups]
admin = usr01
[/]
* =
@admin = rw
[SampleProject:/]
* =
@admin = rw
[SampleProject:/SampleProject]だと"SampleProject/SapmleProject"になる。
adminグループである"usr01"以外は読み書きできない。
以下実行してファイルの管理者をrootからwww-dataに変更した。
sudo chown -R www-data /var/lib/svn/YourProject
www-dataグループに"usr01"を追加する。←意味無い?
gpasswd -a usr01 www-data
これでもまだEclipseからコミットしようとすると以下のようなエラーが出る。
Digest: user usr01:password mismatch:
どうやらこれはEclipseのバグらしい。
TrackLightningでもログを見ると同じエラーログが出力されているので、
とりあえず個人用のサーバーとしては問題ないで。
後でやり直してみて抜けていたこと
WEBDAVがない
ロケーションにDAV svnと書いているが、初期インストールではない。
sudo apt-get install libapache2-svn
で、とりあえずWEVDAVがないというエラーは消えた。
could not reliably determine the server's fully qualified domain name
/etc/hostsに設定した名前がapache2の方に適用されてなかったので見つからずにエラーとなっていた
/etc/apache2/httpd.confに以下追加
ServerName [サーバー名]
最終更新:2011年11月01日 18:06