目次

Apache2.4 アクセス制御ディレクティブ

Version 2.4.41

y2sunlight 2019-10-07

Apacheに戻る

関連記事

Appendix

ここでは<Directory>,<Files>,<Location>ブロックの中で良く使用される記述するアクセス制御ディレクティブについて説明します。Apache2.4 では、Apache2.2 からアクセス制御の記述方法が大幅に変わったおり、特に、Requireディレクティブを使ったアクセス制御は、これまでのOrderとAllow/Denyを使った方法よりも分かり易くなっています。


Require

構文: Require [not] entity-name [entity-name] …

Requireディレクティブは、ユーザーが認証プロバイダーによって認証されているか否かをテストします。

Require all granted アクセスは無条件で許可されます。
Require all denied アクセスは無条件で拒否されます。
Require env env-var [env-var] … 指定された環境変数のいずれかが設定されている場合にのみアクセスが許可されます。
Require method http-method [http-method] … 指定されたHTTPメソッドに対してのみアクセスが許可されます。
Require expr expression expressionがtrueと評価された場合、アクセスが許可されます。
Require user userid [userid] … 指定されたユーザーのみアクセスが許可されます。
Require group group-name [group-name] … 指定されたグループのみアクセスが許可されます。
Require valid-user すべての有効なユーザーに対してアクセスが許可されます。
Require ip [ip-pattern] … 指定されたIPアドレス範囲に対してアクセスが許可されます。


Options

構文: Options [+|-] option [[+|-]option] …

Optionsディレクティブは、特別なアクセス制御オプションを指定する場合に使います。option の頭に+ をにつければ現在の設定に加えられ、 - を付ければ現在の設定から削除されます。以下に指定できるoption を挙げます。

All MultiViews を除いた全てのオプションが有効となります。 (デフォルト動作)
None 全てのオプションを無効にします。
ExecCGI CGI スクリプトの実行を許可します。
FollowSymLinks ディレクトリ中のシンボリックリンクを有効にします。
※ <Location>ブロック内では無視されます。
Includes SSI を有効にします。
IncludesNOEXEC SSI は有効になりますが、#exec コマンド と #exec CGI は無効になります。
※ #include virtual で、ScriptAlias されたディレクトリでのCGI の実行は可能です。
Indexes /で終わるURLリクエストで、DirectoryIndex で指定したファイル(index.htmlなど) が ディレクトリ内に無い場合、ディレクトリ中のファイルリストをクライアントに返します。
MultiViews コンテントネゴシエーションされたMultiViewsを許可します。
SymLinksIfOwnerMatch シンボリックリンクのリンク元とリンク先の所有者が同じ場合にのみシンボリックリンクを 有効にします。
※ <Location>ブロック内では無視されます。


AllowOverride

構文: AllowOverride directive-type [directive-type] …

 AllowOverrideディレクティブはアクセス制御ファイル(既定では.htaccess)によりで上書きが許可されるディレクティブの種類を指定します。AllowOverride は正規表現無しの<Directory>ブロックでのみ有効です。以下に指定できるdirective-typeを挙げます。

All 上書き可能な全てのディレクティブの種類が有効になります。 (デフォルト動作
None アクセス制御ファイルは無視されます
AuthConfig 認証に関するディレクティブの上書きを許可します。
※ AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFileAuthName, AuthType, AuthUserFile, Require など。
FileInfo ドキュメントタイプに関するディレクティブの上書きを許可します。
※ DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime の Add* と Remove* ディレクティブなど。
Indexes ディレクトリインデックスに関するディレクティブの上書きを許可します。
※ AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName など。
Limit ホストへのアクセス制御に関するディレクティブの上書きを許可します。
※ Allow, Deny, Orderディレクティブ
Options 特別なアクセス制御オプションに関するディレクティブの上書きを許可します。
※ Options と XBitHackディレクティブ


Order

Apache2.4ではOrderとAllow/Denyを使った方法よりもRequireを使うことをお薦めします。

構文: Order ordering

 ホストに対するデフォルトのアクセス可能状態と、Allow/Deny ディレクティブの評価順を指定する場合に使います。以下に指定できるordering を挙げます。

Deny,Allow ホストに対するアクセスはデフォルトで許可されます。Deny ,Allow の順で評価されます。Deny に一致するホストからのアクセスを拒否します。 (デフォルト動作
※ カンマ(,)の前後に空白を入れてはいけません。
Allow,Deny ホストに対するアクセスはデフォルトで拒否されます。Allow,Deny の順で評価されます。Allowに一致するホストからのアクセスを許可します。
※ カンマ(,)の前後に空白を入れてはいけません。

Order設定とAllow/Denyによるアクセス制御の結果

マッチ Order Allow,Deny Order Deny,Allow
Allow だけにマッチ 許可 許可
Deny だけにマッチ 拒否 拒否
両方マッチしない 拒否 許可
両方にマッチする 拒否 許可


Allow/Deny

Apache2.4ではOrderとAllow/Denyを使った方法よりもRequireを使うことをお薦めします。

構文: Allow from all | host
構文: Deny from all | host

Allowディレクティブは特定のホストに対するアクセス許可を、Denyディレクティブはアクセス拒否を指定する場合に使用します。最初の引数は常にfromで、それに続く引数には以下の形式があります。

all 全てのホストに対するアクセスを表します。
host DNS名、IPアドレスまたはネットワークアドレス/サブネットなどの様々な指定方法があります。

Allow from httpd.apache.org ・・・・・ DNS名
Allow from apache.org ・・・・・ DNS名の一部
Allow from 192.168.11.1 ・・・・・ IPアドレス
Allow from 192.168.11 ・・・・・ IPアドレスの一部
Allow from 192.168.11.0/255.255.255.0 ・・・・・ ネットワークアドレス/サブネットマスク
Allow from 192.168.11.0/24 ・・・・・ ネットワークアドレス/CIDR形式

より詳しい事は「Apache HTTP サーバ バージョン 2.4 ドキュメント
( http://httpd.apache.org/docs-2.4/ )」を参照して下さい。