Subversion

Last-modified: 2008-07-16 (水) 02:19:32

Subversion設定 前提

  • 必要なパッケージ:mod_dav_svn
  • Subversion用ユーザ :svnopr
  • Subversion用グループ :subversion
  • リポジトリ(本番) :/mnt/subversion/svn-repos
  • リポジトリ(練習) :/mnt/subversion/test-repos
  • 使う人 :hoge

グループ追加&ユーザ追加&使う人の設定

Subversion用グループ追加

# groupadd subversion

Subversion用ユーザ追加

# adduser -d /mnt/subversion -g subversion svnopr

使う人の設定

# usermod -G subversion hoge
# usermod -G subversion apache

リポジトリの作成

[svnopr]$ cd /mnt/subversion
[svnopr]$ mkdir svn-repos
[svnopr]$ mkdir test-repos
[svnopr]$ svnadmin create svn-repos
[svnopr]$ svnadmin create test-repos
[svnopr]$ chgrp -R subversion ./svn-repos
[svnopr]$ chmod -R 770 ./svn-repos
[svnopr]$ chmod -R g+s ./svn-repos/db
[svnopr]$ chmod -R g+s ./svn-repos/dav
[svnopr]$ chgrp -R subversion ./test-repos
[svnopr]$ chmod -R 770 ./test-repos
[svnopr]$ chmod -R g+s ./test-repos/db
[svnopr]$ chmod -R g+s ./test-repos/dav

WevDAV設定

Basic設定(登録1件目)

# htpasswd -b -c /etc/httpd/conf/.htpasswd svnopr svnoprpassward
Adding password for user ユーザ名

Basic設定(登録2件目)

# htpasswd -b /etc/httpd/conf/.htpasswd hoge hogepassward
Adding password for user ユーザ名

ユーザー登録確認

# cat /etc/httpd/conf/.htpasswd
ユーザ名:vYwnFfo59lI/c

mod_dav_svnのインストール

# yum -y install mod_dav_svn

設定ファイルの変更(/etc/httpd/conf.d/subversion.conf)

セキュリティなし設定

# test-reposの設定(セキュリティなし)
<Location /svn-repos>
        DAV svn
        SVNPath /mnt/subversion/project/svn-repos
</Location>
# svn-reposの設定(セキュリティなし)
<Location /test-repos>
        DAV svn
        SVNPath /mnt/subversion/project/test-repos
</Location>

Basic認証-匿名ユーザ禁止

# test-reposの設定(Basic認証-匿名ユーザ禁止)
<Location /test-repos>
        DAV svn
        SVNPath /mnt/subversion/test-repos
        AuthType Basic
        AuthName "Subversion Repository(test-repos)"
        AuthUserFile /etc/httpd/conf/.htpasswd
        Require valid-user
</Location>
# svn-reposの設定(Basic認証-匿名ユーザ禁止)
<Location /svn-repos>
        DAV svn
        SVNPath /mnt/subversion/svn-repos
        AuthType Basic
        AuthName "Subversion Repository(svn-repos)"
        AuthUserFile /etc/httpd/conf/.htpasswd
        Require valid-user
</Location>

Basic認証-匿名ユーザ許可

# test-reposの設定(Basic認証-匿名ユーザ許可)
<Location /test-repos>
        DAV svn
        SVNPath /mnt/subversion/test-repos
        AuthType Basic
        AuthName "Subversion Repository(test-repos)"
        AuthUserFile /etc/httpd/conf/.htpasswd
<LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
</LimitExcept>
</Location>
# svn-reposの設定(Basic認証-匿名ユーザ許可)
<Location /svn-repos>
        DAV svn
        SVNPath /mnt/subversion/svn-repos
        AuthType Basic
        AuthName "Subversion Repository(svn-repos)"
        AuthUserFile /etc/httpd/conf/.htpasswd
<LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
</LimitExcept>
</Location>

パスベースセキュリティ

  • /test-repos/adultはsvnoprとhogeのみ更新可能にする

Subversion設定ファイルの編集(/mnt/subversion/test-repos/conf/authz)

# 管理者グループ
# administrators = svnopr, moja
# エロいファイル管理グループ
adult_developers = svnopr, moja
# adminリポジトリのdocsのみ参照可能とする
# [admin:/docs]
# @administrators = rw
# adultに対するアクセス制限
[/adult]
@adult_developers = rw
* = r

subversion.confの編集

# test-reposの設定(パスベースセキュリティ)
<Location /test-repos>
        DAV svn
        SVNPath /mnt/subversion/test-repos
        AuthType Basic
        AuthName "Subversion Repository(test-repos)"
        AuthUserFile /etc/httpd/conf/.htpasswd
        AuthzSVNAccessFile /mnt/subversion/test-repos/conf/authz
        Require valid-user
</Location>
# svn-reposの設定(パスベースセキュリティ)
<Location /svn-repos>
        DAV svn
        SVNPath /mnt/subversion/svn-repos
        AuthType Basic
        AuthName "Subversion Repository(svn-repos)"
        AuthUserFile /etc/httpd/conf/.htpasswd
        AuthzSVNAccessFile /mnt/subversion/svn-repos/conf/authz
        Require valid-user
</Location>

svn mkdir がhttpベースで失敗する時

原因:WebDAV書き込み時には /リポジトリパス/dav/ にも書き込みが必要
以下の点を確認
・リポジトリパス/dav/ に groupのwビットが立っているか?
・リポジトリパス/dav/ の 属性が770になっているか?