カテゴリー
最近更新したページ
最新コメント
ApacheSSL by stunning seo guys
EMMA by stunning seo guys
EMMA by stunning seo guys
Derby by stunning seo guys
GanttPlugin by stunning seo guys
JavaHL by awesome things!
FrontPage by check it out
ApacheSSL by stunning seo guys
java_subversion by check it out
SubversionInstall by awesome things!

AuthzSVNAccessFile

AuthzSVNAccessFile


  • この機能を使用することにより、Subversionリポジトリにおいて、フォルダ単位でアクセス制限をかけることが可能となります。
  • Trac?もこの機能をサポートしているため、WebDAVでのアクセスに加えて、Trac?のリポジトリブラウザにおいても有効となります。
  • 参考資料:httpd, the Apache HTTP server>Per-Directory Access Control

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ユーザのみ読み書きできます。

 あるユーザとして認証された後も、権限のないフォルダにアクセスしようとした場合は再度認証を要求されます。上位のパスに対して設定された権限は、基本的に下位のパスに引き継がれます(下位で明示的に権限設定を上書きしない限り)。
2006年06月11日(日) 11:50:03 Modified by syo1976




スマートフォン版で見る