Logo address

IP に基づくアクセス制限

目次

配置

	$web/etc/allow

説明

allow はクライアントからのドキュメントへのアクセスをクライアントの IP アドレスで制御します。
以下に記述例を挙げます。
#
#       This file restricts access by IP
#       The restriction is effective to all subtrees.
#
#       We can use shell style wild card.
#       Pegasus extention:
#               a symbol `~' at the beginning means negation
#               se, we don't need deny file
#
/test/authtest/private/room1	*.*.*.*[13579]
/test/authtest/private/room2	~*.*.*.*[13579]
/test/authtest/private/room1/more1	*.*.*[0-4].*
/test/authtest/private/room1/more2	*.*.*[5-9].*
/test/authtest/private/room2/more1	*.*.*[0-4].*
/test/authtest/private/room2/more2	*.*.*[5-9].*
allow の中はパス名と IP アドレスパターンの集まりです。パス名は最初のカラム位置から書き、絶対パスを使用します。IP アドレスパターンは空白文字に続けて書きます。1つの行に複数の IP アドレスパターンを空白文字で区切って書いてもよいし、また複数の行に渡って書くこともできます。

パス名は、そのパス名で示されたパスより下位のディレクトリへのアクセスを制限します。この意味でこのパス名を(アクセスを制限する)パスパターンと呼んでも構わないでしょう。他方 IP アドレスパターンは、そのパス名で指定されたディレクトリへのアクセスが許可される IP の一覧を表しています。

従ってリクエストを制限するパスパターンが存在しなければそのリクエストは許可されます。もしもリクエストが複数のパスパターンとマッチすれば、どのパスパターンでも IP が許可されない限りそのリクエストは拒否されます。

例えば

	/test/authtest/private/room1/more1
のファイルにアクセスするためにはクライアントの IP アドレスは
	*.*.*[0-4].*
たけではなく
	*.*.*.*[13579]
をも満足しなくてはなりません。

IP アドレスのパターンではシェルスタイルのパターンマッチングが使用できます。
先頭の ~ に対して否定の意味を持たせました。これによって特定の IP アドレスの集まりを拒否できることになります。例えば ~* で全ての IP を拒否します。
(どこかのサーバのように deny ファイルをさらに管理する必要はなくなります。)

検査は URI 変換が終了してから行われます。従ってパターンと比較するパスは、ファイル名で終ります。