Categories: WebTechinical

許可だか拒否だか allow,deny

Apacheのアクセス制限設定の基本ではあるが、なんだか考え出すとわかんなくなっちゃう人が多い。自分もそうだったので整理。

  • Order allow, deny
  • Allow from all
  • Deny from xxxxx

というパターンが割と一般的だが、これは

  • Order deny,allow
  • Deny from xxxxx

と書く場合もある。(Apacheのデフォルトは deny, allow みたいなのでこっちが普通?)

この2つが同じだよって言われると、「え?なんで?」って事なってくる。

誤解ポイントは2つ

  1. Order A,B を、 Aを評価した後に、Aでなかったものに対してBを評価すると考えてしまう。
  2. Allow, Deny の記述上の順番に意味があると思ってしまう。

例えば、一番失敗しそうな勘違いは、

  • Order deny,allow
  • Deny from xxxxx
  • Allow from all

これだと、xxxxx が、Denyで弾かれて、その他は、Allow from all で許可されるような印象を持つけど、実際は、こんな記述をしたらオール通し!になってしまう。

これでダメなら、次のはどうか!ってやってみる人もいるかもしれない。

  • Order deny,allow
  • Allow from all
  • Deny from xxxxx

Allow from all で全許可しておいて、後ろのDenyで、xxxxx だけ拒否! しかし、残念ながら、Order の事忘れちゃってますよね。記述上 Deny をAllowの前に書こうが、後ろに書こうが関係ないわけです。

    これらがうまくいかない理由は次の通り

    1. Order A,B は、 Aを評価した後に、Aだったものに対して、Bを評価する
    2. Allow, Deny の記述上の順番には意味なんかない

    つまり上の間違い例だと、 最初に deny を評価するので、 xxxxx が一旦 deny になり、それ以外は、allow になる。この allow になったものは、それ以上チェックされないので、許可。 deny になったものは、更に Allow リストでチェックされるのだが、Allow from all なので、結局 allow になってしまう。で、xxxxx も許可。 ということになってしまうわけです。

    from all という記述がよく見られるのは、「とりあえず全部許可」とか「とりあえず全部拒否」みたいな意思を明確にする意図があって、フィルタ設定では、そういう明示的な設定が推奨されるからだと思いますが、Apache の Order 設定だと、処理的には、「とりあえず全部許可、だけど、やっぱ xxxxx はダメ」みたいな感じで、処理的にはややこしくなってしまう。日本はOKだけと、北海道はダメみたいな設定をしたい場合には必須の設定なんだけど、私的には、from all を使うより、Order をヒックリ返して Deny だけ書くとか Allow だけ書く方がわかりやすいような気もします。

    正しくはありませんが、とりあえず、「Order deny, allow」を、「deny でなければ、allow(なのでDenyだけ書けば良い)」と読んでしまうのも手かもしれませんね。

    はじめ

    Share
    Published by
    はじめ

    Recent Posts

    株式投資に踏み出す為の簡単な計算

    かつて昭和の時代、銀行預金は絶…

    3日 ago

    株はハロウィーンに買え

    今日の米国市場は、まさにそんな…

    3週間 ago

    SOTO Gストーブ ST-320を車内で使う

    キャンプの時は良いのだけど、車…

    4週間 ago

    パワフルなトヨトミ君とあったまるキャンプ

    秋キャンはトヨトミ君と共に 今…

    1か月 ago

    モーニング・グローリーの倒し方

    今回で今年のキャンプはラスト。…

    1か月 ago

    モーニング・グローリー 初めてのシェルター

    テントでもタープでもないもの …

    1か月 ago