Apache HTTP サーバ バージョン 2.4
Apache モジュール mod_authz_owner
説明: | ファイルの所有者に基づいた承認 |
---|---|
ステータス: | Extension |
モジュール識別子: | authz_owner_module |
ソースファイル: | mod_authz_owner.c |
互換性: | Apache 2.1 以降で使用可能 |
概要
このモジュールはリクエストされたファイルのファイルシステムの
所有者やグループを HTTP 認証に使われたユーザ ID (ウェブユーザ ID) と
比較することでアクセスを承認します。提供されたユーザ名とパスワードは
mod_auth_basic
や
mod_auth_digest
のような認証モジュールで既に
適切に検証されている必要があります。mod_authz_owner
は以下のように、Require
ディレクティブの file-owner
と
file-group
という二つの引数を認識します:
file-owner
- 提供されたウェブユーザ名はリクエストされたファイルの所有者の
システムにおける名前と一致する必要があります。つまり、オペレーティング
システムがファイルは
jones
により所有されている と言ったときは、ウェブからのアクセスに使われるユーザ名もjones
でなければなりません。 file-group
- ファイルを所有するシステムのグループの名前が、例えば
mod_authz_groupfile
やmod_authz_dbm
により提供されるグループデータベースに存在していて、 ウェブユーザ名がそのグループに属していなければなりません。 例えば、オペレーティングシステムがファイルは (システムの) グループaccounts
により所有されていると言ったときは、accounts
がグループデータベースに存在して、 リクエストに使用されたウェブユーザ名がそのグループに属している 必要があります。
注
ファイルシステムに実際には存在しないリソース
(つまり バーチャルなリソース) の承認に
mod_authz_owner
が使用されたときは、
アクセスは拒否されます。
特に、コンテント ネゴシエーションされた"MultiViews" のリソースは 決して承認しません。
設定例
Require file-owner
複数ユーザのシステムで Apache ウェブサーバが実行されていて、
~/public_html/private
に各ユーザがファイルを置いているとします。
AuthDBMUserFile
データベースが一つだけあり、すべてのウェブユーザ名が列挙されており、
このユーザ名がサーバで実際にファイルを所有しているユーザ名と一致している場合、
次の節のような設定で、ユーザが自分自身のファイルにアクセスできるようになります。
/home/smith/public_html/private
の中のファイルは、所有者が
smith
の代わりに jones
になっていない限り、
jones
にはアクセスは許可されません。
<Directory /home/*/public_html/private>
AuthType Basic
AuthName MyPrivateFiles
AuthBasicProvider dbm
AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
Require file-owner
</Directory>
Require file-group
上記のようなシステムで、数人のユーザがプロジェクトのファイルを
~/public_html/project-foo
で共有しているとします。
ファイルはシステムのグループ foo
に所有されていて、
AuthDBMGroupFile
データベースが一つだけあり、そこにすべてのウェブユーザ名と
グループのメンバが列挙されている、つまり、それらの
ユーザは少なくとも foo
というグループに属している、とします。
jones
とsmith
の二人共がグループ
foo
のメンバである場合、どちらの人も両方の
project-foo
にアクセスが許可されます。
<Directory /home/*/public_html/project-foo>
AuthType Basic
AuthName "Project Foo Files"
AuthBasicProvider dbm
# combined user/group database
AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
AuthDBMGroupFile /usr/local/apache2/etc/.htdbm-all
Satisfy All
Require file-group
</Directory>