ディレクトリのアクセス制限をグローバル ACF で行う場合は、次のように <Directory>ディレクティブで制限したいディレクトリを指定 して、制限を行なう<Limit>ディレクティブを使用します。
<Directory /usr/local/etc/httpd/htdocs/subdirecty> <Limit GET POST> order, deny from, allow from, require <Limit> </Directory>
とします。
<Limit>ディレクティブは、次のようにメソッドによりクライ アントからの要求を制限します。
<Limit メソッド1 メソッド2 ... メソッドn>.htaccessを使って、個々のディレクトリで行う場合は <Limit>ディレクティブのみを使用します。
ただし、メソッドは GET と POST のみサポートしています。Limitディレクティ ブを閉じる場合は</Limit>を使用します。
<Limit GET> order, deny from, allow from, require </Limit>
ディレクティブ | パラメータ例 | 用途 | |
<Limit> | <Limit GET POST> | アクセス制限節の開始 | |
</Limit> | </Limit> | アクセス制限節の終了 | |
order | deny,allow | アクセスの 評価順 | |
deny from | .foo.co.jp | アクセ ス拒否するドメインまたはIPアドレス | |
allow from | .foo.co.jp | アクセ ス許可するドメインまたはIPアドレス | |
requre | ben bob tom | アクセス を許可するユーザまたはグループ | |
AuthName | Foo Members Only | 認証を要求する際に表示されるメッセージ | |
AuthType | Basic | 認証方式 (Basic, PGP, PEM) | |
AuthUserFile | /www/etc/passwd | パスワードファイルのパス名 | |
AuthGroupFile | /www/etc/group | グループファイルのパス名 | |
<Directory /usr/local/etc/httpd/htdocs> Options Indexes FollowSymlinks AllowOverride All <Limit GET> order allow,deny allow from all <Limit> <Directory>
例えば、ローカル組織内でアクセス制限をする場合、 access.confを次のように変更し、httpdを再起動します。
<Directory /usr/local/etc/httpd/htdocs> Options Indexes FollowSymlinks AllowOverride None <Limit GET> order deny,allow deny from all allow from foo.co.jp <Limit> <Directory>
アクセス制限のないパターンとの違いは次のとおりです。
allow foo.co.jp foo.com 172.16.『allow foo.co.jp foo.com 172.16』のように最後にドットがない と、172.16n.n.n のようなアドレスにもアクセスが許されてしまいます。IPア ドレスを記述する場合は、最後にドットを入れて記述して下さい。(今井@住 友電工様より御指摘)
ディレクトリ毎に制限する場合、.htaccessファイルに <Limit>ディレクティブを置き、ACFの時と同様の記述形式で 制限します。
<Limit GET> order deny,allow deny from all allow from foo.co.jp </Limit>
NCSA Mosaic の場合、ユーザー認証が設定されてくると次のようなプロンプト が表示されます。
ユーザ名入力後、
Netscapeの場合、一度にユーザー名とパスワードを入力するウィンドウが次の ように表示されます。
ユーザー認証はWWWサーバ全体に行われる事は少なく、一 般に特定のディレクトリに対して行われます。そして、ユーザー名とパスワー ドを収めたファイルは一つにまとめることもできますし、個々のディレクトリ 毎に持つ事もできます。そのパスワードファイルは一般に.htpasswdと いう名称で使われます。
例です (ユーザ名をyamada、パスワードを yamada で 入力してみて下さい)
% htpasswd [-c] .htpasswd usernameusername は加えたいあるいはパスワードを変更したいユーザー名です。 -c フラグはそこにパスワードファイル(.htpasswd)が存在せず、 新たに作成する場合に用います。パスワードファイルは以下のようにユーザー 名とパスワードがセミコロン(:)で区切られたファイルです。削除する場合は、 エディタで該当するユーザー行を削除します。
ユーザ名:暗号化されたパスワード taro:y1ia3tjWkhCK2 jiro:kd03g0Wk09ErD saburo:tck3GxmQE7h
<Directory /usr/local/etc/httpd/htdocs> Options Indexes FollowSymlinks AllowOverride None AuthUserFile /usr/local/etc/httpd/conf/.htpasswd AuthGroupFile /dev/null AuthName By Secret Password Only! AuthType Basic <Limit GET> require user username </Limit> </Directory>
% htpasswd -c /usr/local/etc/httpd/conf/.htpasswd username
AuthUserFile /usr/local/etc/httpd/conf/.htpasswd AuthGroupFile /dev/null AuthName By Secret Password Only! AuthType Basic <Limit GET> require user username </Limit>
個々のディレクトリで設定する場合には、<Directory>節は必要ありま せん。
<Directory /usr/local/etc/httpd/htdocs> Options Indexes FollowSymlinks AllowOverride None AuthUserFile /usr/local/etc/httpd/conf/.htpasswd AuthGroupFile /usr/local/etc/httpd/conf/.htgroup AuthName By Secret Password Only! AuthType Basic <Limit GET> require group groupname </Limit> </Directory>
groupname: username1 username2 username3 ... usernameNユーザー名は空白で分割します。複数グループがあれば、一行づつ登録します。 そして、登録し終ったら、httpdを再起動します。
個々のディレクトリで設定を行う場合、アクセス制御の時と同様のファイル .htaccessを使って、以下のように設定します。
AuthUserFile /usr/local/etc/httpd/conf/.htpasswd AuthGroupFile /usr/local/etc/httpd/conf/.htgroup AuthName By Secret Password Only! AuthType Basic <Limit GET> require group groupname </Limit>
個々のディレクトリで設定する場合には、<Directory>節は必要ありま せん。
ユーザーのホームディレクトリにpublic_htmlディレクトリを設けると、 http://www.foo.co.jp/~username/ でアクセスできます。こ こに対して、個々にグローバルACFを許さないようにプロテクトをかける場合、 次の方法があります。
もし、全てのユーザーがあるディレクトリ(例えば、/home)にいる場合、 /home ディレクトリ全体にプロテクトをかけるだけです。 access.confファイルの中に次のディレクティブを加えます。
<Directory /home> AllowOverride None Options Indexes </Directory>
ユーザーディレクトリがバラバラの場合、次のようにワイルドカードを使って 設定します。
<Directory /*/*/public_html*> AllowOverride None Options Indexes </Directory>