[ホーム] -> [Aache + PHP + PostgreSQL 実験室] |
アクセスできる人を制限したい場合に利用するのが、このアクセス制御です。大抵は既出の <Directory>
ディレクティブや、.htaccess
ファイルを使って、ディレクトリ単位で制御を行います。この制御は大きく分けて2種類有り、一つはアクセス元の IP アドレスを利用する方法、もう一つはユーザ名/パスワードを入力してもらう方法です。組み合わせても使えます。用途に応じて使い分けてください。
ユーザ/パスワードの認証は、基本認証と呼ばれるものです。このユーザ/パスワードは、HTTP リクエストヘッダーの Authorization:
というので渡されます。HTTP の例に漏れず、このヘッダーは暗号化されていないので、盗聴される危険性もありますので、注意してください。
アクセスできるクライアントのアドレスを指定します。host
には、all
という文字列か、ホスト名か IP アドレス、ドット「.
」で始まるドメイン名、ドットで終わる IP アドレスの一部、ネットワークアドレス/ネットマスク(ビット数でも可) を指定できます。例えば、「host.dokoka.com 10.1.2.3 .domain.com 192.168.0. 10.0.2.0/255.255.255.0 192.168.64.0/26
」とかです。
アクセスを禁止するクライアントのアドレスを指定します。指定方法は Allow
と同じです。
Allow
と Order
をどちらの順番で適用するかを設定します。Deny,Allow
は、まず Deny
を評価して、次に Allow
を評価します(アドレスが重なっている場合は、後の方で上書きされます)。どちらにもないアドレスの場合は、許可になります。Allow,Deny
は、適用順は逆で、どちらにもないアドレスの場合は、拒否になります。Allow
と Deny
の評価は、すべて行われるのに注意してください。Order
で指定した順番で適用した結果、最終的に許可か拒否が決定されます。
認証を行うタイプを指定します。今のところ Basic
しか指定できません。
認証を行うときに表示される、「認証ドメイン名」です。まあ、実際のところは、基本認証のユーザ名/パスワードを入力する画面に表示される文字列です。
アクセスを許可するユーザ、グループ名を指定します。user
の場合はその後ろにユーザ名を指定でき、ユーザ/パスワードの正しく、ここに指定されたユーザだけがアクセスできるようになります。group
の場合はグループ名を指定でき、ユーザ/パスワードが正しく、ここで指定したグループに存在するユーザだけがアクセスできるようになります。
次の AuthUserFile, AuthGroupFile
を使った認証のみを使用するかどうかを指定します。ユーザ認証を行うモジュールは、これ以外でも mod_auth_db, mod_auth_dbm, mod_auth_anon などいろいろありますが、ここを On
に設定すると、AuthUserFile, AuthGroupFile
に存在しないユーザは拒否されます。Off
に設定すると、存在しないユーザは他のモジュールに渡され、他のモジュールで認証が行われるようになります。
ユーザ認証を行うときに利用する、ユーザ名とパスワードが書かれたファイルを指定します。このファイルは、Apache 付属の htpasswd
というコマンドを使って作成できます。path
はサーバ上のどこでも指定できるので、クライアントから参照出来ない場所(ドキュメントツリーの外)に置くようにしてください(それが出来ない場合、最近の Apache は .htpasswd
などのように .ht
で始まるファイルは、アクセスを禁止する設定がされている(httpd.conf
をよく見て!)ので、そういう名前にしてください。
> htpasswd -c /www/data/passwd jibun New password:pass phrase Re-type new password:pass phrase Adding password for user jibun
-c
オプションは、最初にファイルを作成するときにだけ指定してください(そうしないと、すでにあるデータが消えてしまいます)。ユーザが多いときは、このファイルは効率悪いので、AuthDBMUserFile
(ここでは説明してません)などを使うことを推奨します。また、mod_auth_pgsql といった、ユーザ情報を PostgreSQL で管理するモジュールなどもあります(別途後述します)。
グループ管理をしたいときに、グループとユーザ名の対応付けしたファイルを指定します。中身は、「group-name: userid[ userid] ...」という風になっています。グループが多いときは、このファイルは効率悪いので、AuthDBMGroupFile
(ここでは説明してません)などを使うことを推奨します。
クライアントの IP アドレスによる認証と、ユーザ認証の両方が設定されている場合の動作を設定します。any
が指定されていると、どちらか一方で許可されれば、アクセス可能となります。all
(デフォルト)が指定されていると、両方とも許可されない限り、アクセスすることは出来ません。