Internet Information Server(IIS) 3.0 を使ってイントラネットのホームページを作りました。 IIS の FTP サービスを新規に利用しようとしているのですが、アクセス制御をしようと思い、一部の公開ファイルに NTFS アクセス権を設定したところ、ブラウザに図1のような「サーバーが拡張情報を返しました」というエラー(IE 4.x の場合)が表示されてしまいます。
図1: 「サーバーが拡張情報を返しました」のメッセージボックス
特定のユーザーだけにファイルを公開したい場合は,どうすればよいのですか?
なお匿名アカウントにファイルのアクセス権を与えるとファイルにアクセス出来ます。また、IIS の ftp サーバの設定で、「匿名アカウントでのみログオンする」のチェックボックスは外してあります。
直接の原因は、ftp サーバにアクセスするときに、
ftp://server/
の形式でアクセスを行ってしまっていたのが原因です。
Web サーバの側で同様の設定を行い、
http://server/
の形式でアクセスを行うと意図した通りにアクセスできるので、 ftp サーバも同じ設定を行えば大丈夫だと思い込んでしまう方がいらっしゃるようです。
IIS の場合、Web サーバの設定も、ftp サーバの設定もほとんど同じように行えてしまうのですが、違うプロトコルである以上、当然違いがあります。
ftp をコマンドラインで使ったことのある方は、 ftp での接続の場合、サーバへの接続時に一度認証(通常は anonymous (匿名) アカウントを用いると思います)を行った後は、そのアカウントの権限で ftp サーバ内のディレクトリを移動してファイルにアクセスするということをご存知だと思います。
一方 http の場合はどうでしょうか? ブラウザから操作しているとあまり意識する必要がないのですが、実はファイルを一つ入手する度に毎回 http サーバに接続して、認証を行い、ファイルを入手後、認証を切断するという行為を繰り返しています。
ブラウザからファイルを入手していると一見同じように見える http と ftp ですが、実際はこのように大きく異なります。 当然 ftp の方が効率的にファイル転送を行うことが出来ます。
では、ブラウザを使って ftp サーバにログオンするときは、実際は誰でログオンしているのでしょうか。
実は ftp://server/
という形式でサーバにアクセスすると、匿名ログオンが行われます。
これは ftp はパスワードが平文で流れると言うセキュリティ上の問題点があるため、現在の ftp の用途としては、インターネット上の公開ファイルを入手するための匿名でのアクセスが多いという現状に即した仕様だと思います。
今回の問い合わせの状況は、匿名アカウントでのアクセスを許可するとファイルにアクセスできるということなので、IIS の設定で匿名ログオンと、アカウントを指定するログオンの両方が許可されている状態だと思います。従って、ブラウザで普通にアクセスすると匿名アカウントとしてログオンしてしまうのです。
先程述べたように ftp では一度匿名アカウントでサーバにログインしてしまうと、ログオフするまでずっと匿名のままです。 従って、匿名アカウントにアクセス権がないファイルに付いては、ftp がエラーを返却し、ブラウザでは「サーバーが拡張情報を返しました」というエラーとして返却されるのです。
それではブラウザから匿名でないアカウントで ftp サーバにログインしたいときは、どのようにすればよいのでしょうか? ftp サーバで匿名でのログインを許可していない場合は、Internet Explorer 4の場合、図2のようなダイアログが出てログオンできません。
図2: アクセスが拒否時のメッセージボックス
また Internet Explorer 5 では、最初にアクセスした時点でユーザ情報を求める図3のようなダイアログボックスが現れますので、そこでアカウントとパスワードを入力すればログインできるという動作の違いはありますが、いずれにしても匿名ログインが許可されているとそのまま匿名でログインしてしまいます。
図3: IE 5 で表示されるダイアログボックス
実は、以下のように URL 中にユーザ名とパスワードを埋め込むことで、任意のアカウントでログインが可能になります。
ftp://username:password@server/
また Internet Explorer 5 では
ftp://username@server/
のようにユーザ名だけを指定すると、図3と同様にパスワードを求めるプロンプトが現れます。 ただし、この方法では認証情報がユーザに丸見えになってしまいますので、あまり使い勝手がよいとは言えないでしょう。そもそも ftp はパスワードがネットワーク上を平文で流れますので、インターネット上での匿名でないアカウントを使ったアクセスは推奨できません。 またイントラネットであれば、通常は Windows NT サーバのファイル共有機能を用いた方がよいでしょう。 セキュリティ的に脆弱な面もありますが、平文でパスワードが流れる ftp よりはずっと安全です。