AuthzSVNAccessFile
AuthzSVNAccessFile
- この機能を使用することにより、Subversionリポジトリにおいて、フォルダ単位でアクセス制限をかけることが可能となります。
- Trac?もこの機能をサポートしているため、WebDAVでのアクセスに加えて、Trac?のリポジトリブラウザにおいても有効となります。
- 参考資料:httpd, the Apache HTTP server>Per-Directory Access Control
- 日本語:Subversion によるバージョン管理>ディレクトリごとのアクセス制御
Apache httpd.confの設定
モジュールの組み込み
Apache経由でSubversionリポジトリにアクセスする場合、以下のモジュールが組み込まれているはずです。
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
これに加えて、
LoadModule authz_svn_module modules/mod_authz_svn.so
を追加する必要があります(パスは環境によって修正が必要です)。
SubversionのRootLocation定義
もう少し綺麗な設定方法があるかもしれません・・・。なお、Subversionリポジトリは、C:\svn\Repos1、C:\svn\Repos2に作っているとします。
<Location /svn/>
DAV svn
SVNParentPath c:/svn
#Autoversioningの設定はもしかしたら不要かもしれません。
SVNAutoversioning on
#アクセス制御の定義を行うファイルを指定します。
AuthzSVNAccessFile C:/svn/svn.access
</Location>
Subversionの各リポジトリの定義
<Location /svn/Repos1>
#認証済のユーザーのみを許可するのであればSatisfyの行は不要
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion repository No.1"
#認証に使用するユーザーID/パスワードを格納したファイルを指定
AuthUserFile c:/svn/repos1.password
</Location>
複数のリポジトリを設定する場合でも基本は同じです(Locationディレクティブのパスを対応するリポジトリのパスにあわせます)。
アクセス制御ファイル
C:\svn\svn.accessとして、以下の内容のファイルを作成したとします。
[groups]
member = username1, username2
[/]
* = r
[Repos1:/]
* = r
@member = rw
[Repos1:/Hoge]
username2 = r
[Repos2:/]
* =
username1 = rw
username3 = rw
*は全ユーザを対象とし、rは読み取り権限を、wは書き込み権限を与えます。また、グループ指定を行う場合は[groups]で定義し、@を付加することでその定義を使用することができます。
上記の例だと・・・(username1〜3というユーザが登録されているとします)
- ユーザusername1, username2をmemberというグループに登録します。
- ルートの部分は誰でも(認証されていないユーザも含めて)閲覧可能です。
- Repos1リポジトリは誰でも閲覧可能です。
- Repos1リポジトリはmemberグループに参加しているusername1, username2の2ユーザは任意に読み書きできます。
- ただし、Repos1リポジトリ内の/Hogeというパス以下は、username2は読み込みしかできません。
- username3は、Repos1リポジトリは閲覧しかできません。
- Repos2リポジトリは、認証されていないユーザはアクセスできません。
- Repos2リポジトリは、username1, username3の2ユーザのみ読み書きできます。
あるユーザとして認証された後も、権限のないフォルダにアクセスしようとした場合は再度認証を要求されます。上位のパスに対して設定された権限は、基本的に下位のパスに引き継がれます(下位で明示的に権限設定を上書きしない限り)。
コメント(1) |

カテゴリ:パソコン > subversion
2006年06月11日(日) 11:50:03 Modified by syo1976