Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

IIS 6.0のFTPサーバでユーザー・フォルダを分離する(Active Directory編)

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2005/07/09
 
対象OS
Windows Server 2003+IIS 6.0
IIS 6.0のFTPサービスでは、ユーザーごとにフォルダを完全に分離し、ほかのユーザーのフォルダから隔離する機能が導入された。
Active Directoryを使ったユーザーの分離モードでは、ユーザーごとのFTP用フォルダをActive Directoryの属性として定義しておくことができる。
ユーザーごとのフォルダ属性を設定するには、iisftp.vbsコマンドを利用する。
 
解説

 TIPS「IIS 6.0のFTPサーバでユーザー・フォルダを分離する(基本編)」では、IIS 6.0のFTPサービスでユーザーごとにフォルダを分離する基本的な方法について解説した。この方法を利用すると、例えばuser01がFTPサイトにログオンしたときに、ユーザーのフォルダを/home/user1の下だけに限定させ、ほかのフォルダへの移動や参照などを禁止することができる。セキュリティを重視するFTPサイトを構築したい場合は、この機能を利用して、ほかのユーザーやほかのグループのフォルダへの移動を禁止するとよい。

 ユーザーごとにフォルダを隔離、制限する機能を「ユーザーの分離機能」というが、先のTIPSで述べたとおり、IIS 6.0のFTPサービスでは次の2通りのモードが利用できる。

  • 「ユーザーを分離する(Isolate users)」モード
  • 「Active Directoryを使ってユーザーを分離する(Isolate users using Active Directory)」モード

 先のTIPSでは、前者のモードについて解説した。これは固定的なユーザー・フォルダ構成に向く、シンプルなモードである。デフォルトではLocalUserというフォルダの下にすべてユーザーのフォルダを集中させる必要があるが、設定方法や利用法も簡単なので、導入も容易だろう。だが、ユーザーごとに異なるフォルダを見せたい場合やグループごとにフォルダを使い分けるといった用途には向かない。

 これに対して後者のActive Directoryを使ったモード(以下Active Directoryモード)では、Active Directoryのユーザー・アカウントごとにフォルダ(ルート・フォルダとホーム・フォルダ)を登録しておくことができる。Active Directoryでドメインを構築していなければ利用できないが、ユーザーごとに自由にフォルダを設定できるので、自由度が高いのが特徴である。本TIPSでは、このモードの利用方法について解説する。


操作方法

Windows Server 2003のActive Directoryを利用する

 Active Directoryモードを利用するためには、まずWindows Server 2003でActive Directory環境を構築しておく必要がある。Windows Server 2003のActive Directoryでは、このFTPのActive Directoryモード用にスキーマ(データベースの基本的なデータ構造)が拡張されているため、Windows 2000のActive Directoryでは利用できない。このモードでは、次のユーザー属性が利用される。

属性名 意味
ms-IIS-FTP-Root ユーザーがFTPサイトにログオンしたときの親フォルダの指定。ローカルのフォルダでよいし、リモート・コンピュータ上の共有フォルダでもよい。次のms-IID-FTP-Dirと組み合わせて利用される。省略は不可(省略するとFTPログオンできない)
ms-IIS-FTP-Dir FTPサイトにログオンしたときのユーザーの「カレント」となるルート・フォルダ(cdコマンドなどで上位のフォルダへ移動することはできない)。ms-IIS-FTP-Rootと組み合わせて利用される。省略は不可(省略するとFTPログオンできない)
Windows Server 2003のActive Directoryで拡張されたFTP用ユーザー属性
2つの属性が組み合わされてFTPフォルダ名として取り扱われるので、必ず両方とも指定しなければならない。

 Windows 2000のActive Directoryでも、スキーマを拡張して、これらの属性を追加すれば利用できるが、すべて手動で行わなければならないので、あまり現実的ではない。

手順1―ユーザーごとのフォルダ属性値の設定

 Active Directoryモードでは、各ユーザーごとにFTPのルートとなるフォルダを設定することができる。このフォルダは、IIS 6.0が動作しているコンピュータのローカル・フォルダでもよいし、ネットワーク上のサーバの共有フォルダでもよい。

 ユーザーごとのフォルダを指定するには、上で述べたms-IIS-FTP-Rootとms-IIS-FTP-Dirの組を使用する。ms-IIS-FTP-Rootには、ユーザー・フォルダが含まれている親のフォルダ名や共有フォルダ名を指定し、ms-IIS-FTP-Dirには(通常は)ユーザー名を指定する。例えばユーザーuser01のフォルダを「c:\home\group01\user01」にするなら、ms-IIS-FTP-Rootとms-IIS-FTP-Dirをそれぞれ「c:\home\group01」「user01」とするか、「c:\home」「group01\user01」のように設定する。共有フォルダの場合は「\\server1\home」と「group01\user01」のように設定すればよい。いずれの場合でも、ユーザーuser01がFTPでログオンすると、\user01というフォルダがカレント・フォルダとなっており、その上位のフォルダ(\group01)へ移動することはできない。

 なお、すべてのユーザーが同じフォルダを利用するからといって、「c:\home\group01\user01」と「.」というふうには設定できない。ms-IIS-FTP-Dirには「.」や「/」「\」といった特殊なフォルダ名は指定できず、必ず何らかのフォルダ名を使わなければならないようである。

 ユーザーごとにこれらの値を設定するには、「iisftp.vbs」コマンドを利用する。これはIIS 6.0から新しく導入されたスクリプト・コマンドであり、IIS 6.0の設定をコマンドラインから制御することができる。

 このコマンドにはいくつかの引数があるが、FTPフォルダを設定するには、「iisftp /SetADProp ユーザー名 FTPRoot ルート」と「iisftp /SetADProp ユーザー名 FTPDir フォルダ」を利用する。具体的には次のようなコマンドを実行する。

C:\>iisftp /setadprop user01 ftproot c:\home\group01 …ルートの設定
The value of ftproot for user user01 has been set to c:\home\group01

C:\>iisftp /setadprop user01 ftpdir  user01 …ユーザー・フォルダの設定
The value of ftpdir for user user01 has been set to user01

 設定された内容の確認は「iisftp /GetAdProp」コマンドを利用する。

C:\>iisftp /getadprop user01 ftproot
The value of ftproot for user user01 is:
c:\home\group01

C:\>iisftp /getadprop user01 ftpdir
The value of ftpdir for user user01 is:
user01

 複数のユーザーに対してこれらの値をセットするためには、例えばバッチやスクリプト・ファイルなどを使って対処すればよいだろう。

手順2―Active Directoryモードの仮想FTPディレクトリを作成する

 ユーザーごとのフォルダ設定が完了したら、次はFTPの仮想サイトを作成する。具体的な手順は、前掲のTIPSとほとんど同じなので、そちらを参考にしていただきたい。以下では、異なる部分だけを説明する。

 FTPサイトを作成するには、IIS 6.0の管理ツール([管理ツール]の[インターネット インフォメーション サービス(IIS)マネージャ])を起動し、[FTP サイト]名を右クリックして、ポップアップ・メニューから[新規作成]−[FTPサイト]を実行する。

 すると[FTP サイトの作成ウィザードの開始]ダイアログが表示されるので、適当なFTPのサイト名と、FTPサイトで使用するIPアドレス/ポート番号を入力して、先へ進める。次のダイアログが表示されたら、[Active Directoryを使用してユーザーを分離する]を選択する。

Active Directoryモードの選択
Active Directoryの登録情報に基づいて、ユーザーのフォルダを分離することができる。
  従来のFTPモード。
  ローカル・アカウント(もしくはドメインのアカウント)をベースにユーザーを分離するモード。ユーザー・フォルダを集中して配置しておく必要がある。
  ユーザー・フォルダの情報をActive Directoryに登録しておくモード。ユーザーごとに異なるローカル・フォルダや共有フォルダを利用することができる。

 ウィザードの次の画面では、Active Directoryにアクセスするためのアカウントを指定する。先に述べた、ユーザーごとのフォルダの設定はActive Directoryのms-IIS-FTP-Rootとms-IIS-FTP-Dirに登録されているため、これらの属性をFTPサーバが読み取るためのアカウントを指定する必要がある。Active Directoryの属性を読み取るだけの最低限の権限を持ったアカウントを作成し、指定しておく。

Active Directoryのアクセス資格の設定
Active Directoryに登録された情報へアクセスするための情報を設定する。
  Active Directoryの登録情報を読み取るためのアカウントの指定。Domain Users権限のあるアカウントを新たに作成し、利用するとよい。
  パスワード。
  ドメイン名が省略された場合に補われるデフォルト・ドメイン。

 ドメイン名には、FTPログオンで利用されるデフォルトのActive Directoryドメイン(FQDN名もしくはNTドメインで利用される省略形)を指定する。FTPのユーザー名が「domain\user01」ではなく、単に「user01」と入力された場合には、このデフォルト・ドメインが利用される。

 この画面を終了して、[次へ]をクリックし、読み書きの許可設定を行う(デフォルトでは読み出しのみ許可となっているので、必要に応じて書き込みを許可すること)。

 ウィザードの実行後、作成したFTPサイトを[起動]させると、準備は完了である。以後、ユーザーがFTPサイトにログオンすると、設定されたフォルダへ移動しており、さらに、その上位のフォルダへは移動できない(「cd ..」などが実行できない)ことが分かるだろう。End of Article

関連記事(Windows Server Insider)
Windows TIPS:FTPの仮想ディレクトリに対応するフォルダを作成する
Windows TIPS:FTPサーバでユーザー・フォルダを設定する
Windows TIPS:IIS 6.0のFTPサーバでユーザー・フォルダを分離する(Active Directory編)
Windows TIPS:IIS 6.0のFTPサーバでユーザー・フォルダを分離する(基本編)
     
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間