CentOS4.x CentOS5.x CentOS6.x Subversion

Redhat Enterprise互換のLinuxディストリビューション CentOS に、Subversionをインストールします



WebDAVアクセス認証

WebDAVでのリポジトリ公開の設定では、全ての人がリポジトリの参照及び更新ができてしまいます。

これではまずいので、細かい認証の設定例を記載します。

authzsvn.confの作成

home/svn/repos/sample/authzsvn.confを以下の様な内容で作成します

[groups]
#開発者
developers = foo, bar
#管理者
manager = foo
[/]
#すべての人が読み込み可能
* = r
[sample:/trunk]
#開発者は読み書き可能
@developers = rw
[sample:/branches]
#管理者は書き込みも可能
@manager = rw
[sample:/tags]
#管理者は書き込みも可能
@manager = rw

上記設定の場合、リポジトリ管理者をfoo , 開発者をfoo,barとして定義してます。

その他(匿名ユーザ)は読み込み専用とし、foo,barはtrunk下の読み書き可能、fooユーザはbranches及びtags下の読み書きが可能となります

匿名アクセスの設定例

すべての人に対して自由にアクセスすることを許します。ユーザは匿名で扱われます。

apache2用のsubversion設定ファイル(/etc/httpd/conf.d/subversion.conf)を以下の様に再定義します。

<Location /svn/sample>
    DAV svn
    SVNPath /home/svn/repos/sample
    # our access control policy
    AuthzSVNAccessFile /home/svn/repos/sample/authzsvn.conf
</Location>

認証つきアクセスの設定例

すべての人に対して認証を求めます。

apache2用のsubversion設定ファイル(/etc/httpd/conf.d/subversion.conf)を以下の様に再定義します。

<Location /svn/sample>
    DAV svn
    SVNPath /home/svn/repos/sample

    # our access control policy
    AuthzSVNAccessFile /home/svn/repos/sample/authzsvn.conf

    # only authenticated users may access the repository
    Require valid-user

    # how to authenticate a user
    AuthType Basic
    AuthName "Subversion repository(sample)"
    AuthUserFile /home/svn/repos/sample/.htpasswd
</Location>

なお、認証ファイル(/home/svn/repos/sample/.htpasswd)の作成方法は以下

#/usr/bin/htpasswd -c /home/svn/repos/sample/.htpasswd foo

認証つき/匿名の両方でアクセスする場合の設定例

読み込み時は匿名でアクセスするが、更新時に認証を聞いてくる様な設定です。

apache2用のsubversion設定ファイル(/etc/httpd/conf.d/subversion.conf)を以下の様に再定義します。

<Location /svn/sample>
    DAV svn
    SVNPath /home/svn/repos/sample

    # our access control policy
    AuthzSVNAccessFile /home/svn/repos/sample/authzsvn.conf

    # try anonymous access first, resort to real
    # authentication if necessary.
    Satisfy Any
    Require valid-user

    # how to authenticate a user
    AuthType Basic
    AuthName "Subversion repository(sample)"
    AuthUserFile /home/svn/repos/sample/.htpasswd
</Location>

特定ディレクトリ以下のみ参照不可とする

Subversionを使って会社間で共同開発する場合、見られたくないドキュメント等があると思います

ここでは、特定ディレクトリ以下についてのみ特定グループの人は参照不可とする為の設定を行います(ディレクトリの存在そのものが知られる事はありません)

Windowsの場合も設定するファイルは同じですので、表記のパス名をWindows用に読み替えてください

想定するディレクトリ構成

以下の様なディレクトリ構成を仮定し、「local」ディレクトリ以下は協力会社には見えない様に設定します

sample
    +trunk
       +--src
           + aaaa.c
           + bbbb.c
              :  :
              :  :
       +--docs
           + 設計書.xls
              :  :
       +--local            <-- (*)ここから下を不可視にする。
           + 見積書.xls
              :  :

authzsvn.confの設定

協力会社のグループを「partner」として設定し、authzsvn.confを以下の様に設定します。(リポジトリ名は「sample」です)

[groups]
#開発者のアカウント (staff1,staff2,staff3というアカウントを定義)
developers = staff1, staff2, staff3
#管理者のアカウント (oresamaというアカウントを定義)
manager = oresama
#協力会社のアカウント (other1,other2というアカウントを定義)
partner = other1, other2
[/]
@manager = rw
[sample:/trunk]
@developers = rw
@manager = rw
@partner = rw

# 協力会社(@partner)は、/trunk/local以下のアクセスは拒否
[sample:/trunk/local]
@partner =

これで、trunk/local以下は協力会社からは存在さえ気付かれないはずです。


目次

  • Page.1
    • 構築する環境
    • subversionの導入
  • Page.2
    • subversionを使ってみる
      • リポジトリの作成
      • リポジトリのインポート
      • ブランチ/タグの作成
  • Page.3
    • WebDAVでのリポジトリ公開

      http://ホスト名/svn/xxx でリポジトリにアクセスできる様、apacheの設定を行います

  • Page.4
    • WebDAVアクセス認証の設定
      • 匿名アクセスの設定
      • 認証つきアクセスの設定
      • 認証つき/匿名の両方でアクセスする場合の設定
      • 特定ディレクトリ以下のみ参照不可とする

関連ページ