4.5.3 ディレクトリに対するアクセス制御
アクセスコントロールファイル(.htaccess)を特定のディレクトリ下に作成すれば,そのディレクトリに対するアクセス権を設定できます。そのファイルにアクセスを許可または拒否するクライアント名(IPアドレス)やユーザ名を指定します。
- 〈この項の構成〉
(1) アクセスコントロールファイル
アクセスコントロールファイルを特定のディレクトリ下に作成すれば,そのディレクトリに対するアクセス権を設定できます。アクセスコントロールファイルの名称は,AccessFileNameディレクティブで指定します。デフォルトは.htaccessです。
アクセスコントロールファイルによるアクセス制御は,Webサーバを再起動することなく,有効になります。ただし,正しく機能させるためには,httpsd.confのAllowOverrideディレクティブを適切な上書き許可レベルに設定する必要があります。
アクセスコントロールファイルにパスワードファイルを指定すると,ユーザがそのディレクトリにアクセスする場合にユーザ名およびパスワードの入力を要求します。
- 注意事項
-
アクセスコントロールファイル(.htaccess)とパスワードファイル(.htpasswd)は1対1である必要はありません。異なるアクセスコントロールファイルのAuthUserFileディレクティブに同じパスワードファイルを指定できます。
(2) アクセス権の設定例
次のようなディレクトリ構成で,各ディレクトリに対してアクセスコントロールファイルにアクセス権を設定します。
[user001のpublic_html] │ ├─[auth]──┬──.htaccess │ └──index.html ├─[test1]─┬──.htaccess │ ├──.htpasswd (user001/test1) │ ├──index.html │ ├─[test11]──┬───.htaccess │ │ ├───.htpasswd (user001/test11) │ │ └───index.html │ └─[test12]─┬──index.html │ └─[test121]──┬──.htaccess │ └──index.html └─[test2]──┬──.htaccess ├──.htpasswd (user001/test21, │ user002/test22,user003/test23) ├──.groupfile(mygroup: user001 user002) └──index.html
-
authディレクトリ下のアクセス権の定義(auth/.htaccessファイル)
IPアドレスが172.18.102.11および172.16.202.4のサーバからのアクセスを拒否します。
Order deny,allow …1. Deny from 172.18.102.11 172.16.202.4 …2.
-
アクセス拒否の定義を先に評価
-
アクセス拒否の定義
-
-
test1ディレクトリ下のアクセス権の定義(test1/.htaccessファイル)
ユーザ名=user001,パスワード=test1を入力した場合だけ,test1/index.htmlおよびtest1/test12/index.htmlへのアクセスを許可します。
AuthUserFile C:/user001/public_html/test1/.htpasswd …1. AuthName "test1 Directory" …2. AuthType Basic <Limit GET POST> …3. Require user user001 …4. </Limit>
-
パスワードファイルの定義
パスワードファイルに登録しているユーザ名とパスワード
ユーザ名:user001,パスワード:test1
-
realm名の定義
-
メソッドに対する定義
-
ユーザ名:user001のアクセスを許可
-
-
test1/test11ディレクトリ下のアクセス権の定義(test1/test11/.htaccessファイル)
ユーザ名=user001,パスワード=test11を入力した場合だけ,test1/test11/index.htmlへのアクセスを許可します。
AuthUserFile C:/user001/public_html/test1/test11/.htpasswd …1. AuthName "test11 Directory" …2. AuthType Basic <Limit GET POST> …3. Require user user001 …4. </Limit>
-
パスワードファイルの定義
パスワードファイルに登録しているユーザ名とパスワード
ユーザ名:user001,パスワード:test11
-
realm名の定義
-
メソッドに対する定義
-
ユーザ名:user001のアクセスを許可
-
-
test1/test12/test121ディレクトリ下のアクセス権の定義(test1/test12/test121/.htaccessファイル)
ユーザ名=user001,パスワード=test1を入力し,WebブラウザがMSIEの場合だけ,test1/test12/test121/index.htmlへのアクセスを許可します。
Order deny,allow …1. Allow from env=MSIE …2. Deny from all …3.
-
アクセス拒否の定義を先に評価
-
WebブラウザがMSIEの場合,アクセスを許可
-
すべてのホストからのアクセスを拒否
ただし,httpsd.confに次のディレクティブを定義しているものとします。
SetEnvIf User-Agent ".*MSIE.*" MSIE
-
-
test2ディレクトリ下のアクセス権の定義(test2/.htaccessファイル)
mygroupグループのユーザ名,パスワードを入力した場合だけ,test2/index.htmlへのアクセスを許可します。
AuthUserFile C:/user001/public_html/test2/.htpasswd …1. AuthGroupFile C:/user001/public_html/test2/.groupfile …2. AuthName "test2 Directory" …3. AuthType Basic <Limit GET POST> …4. Require group mygroup …5. </Limit>
-
パスワードファイルの定義
パスワードファイルに登録しているユーザ名とパスワード
ユーザ名:user001,パスワード:test21
ユーザ名:user002,パスワード:test22
ユーザ名:user003,パスワード:test23
-
グループファイルの定義
グループファイルに登録しているグループ名
グループ名:mygroup
mygroupに登録しているユーザ名:user001,user002,user003
-
realm名の定義
-
メソッドに対する定義
-
グループ名:mygroupのアクセスを許可
-