Virtual FTP-server with wu-ftpd: 仮想サービスとサーバー

次のページ 前のページ 目次へ

## 2. 仮想サービスとサーバー

ホスト名が仮想インターフェースに対応する場合は、一般的にそのホストを “仮想ホスト”と呼びます。 仮想ホスト（または仮想インターフェース）でサービスを動かしている デーモンを“仮想サーバー”と呼びます。

## 2.1 仮想 WWW サーバー

既に３つの仮想 WWW サーバーの例を前記で紹介しました：

> `

>     www.sharpers.com, www.usurers.com, www.swindlers.com

> `

著者の知る限り、すべてのメジャーな http デーモン（例：うまく設計され ている "Roxen Challenger" や広く使われている "Apache"）の仮想ホストの 設定方法は非常に容易でドキュメント類も既に整備されています。 簡単に言えば、 単に www ポート（ポート番号 80）を WWW サーバーを動かし たい IP アドレス/ホスト名に割当てた仮想ネットワーク・インターフェースに バインドするだけです。なにもトリックはありません。

これに関する詳細は Linux "Virtual Web mini-HOWTO" を参照して下さい。

## 2.2 仮想メールアドレス

最も単純なケースとして以下のような仮想ホストと所属しているドメイン宛て のすべてのメールを受けとる場合：

> `

>     www.sharpers.com, www.usurers.com, www.swindlers.com,
>         sharpers.com,     usurers.com,     swindlers.com

> `

"smail" や "sendmail"（Linux マシンでメール処理を行っているデーモン）の 設定は比較的簡単なもので、追加ホスト名/ドメインを以下のファイルに書く だけです：

> `

>              "/etc/smail/config" ('hostnames=' と 'domains=' エントリ)

> `

あるいは

> `

>              "/etc/mail/sendmail.cw" （別々の行にそれぞれのホスト名）

> `

smail に「本当の」仮想ドメインを実装する場合は、下記にある smail-FAQ を ご覧ください。

> `

>     http://www.sbay.org/smail-faq.html

> `

## 2.3 仮想 ftp サーバー

仮想 ftp サーバーというコンセプトは、著者の知る限り、どの ftp デーモン でもサポートされていません。

広く使われている "wu-ftpd" では Brian Grossman <brian@SoftHome.Net> が作成した anonymous FTP サービス を仮想インターフェースごとに区別する ためのパッチがあります。入手方法とパッチ方法は３章で紹介します。

これ以外に同様のパッチは見当たりません。

Brian のマルチホーム・パッチの基本的な考え方は wu-ftpd の " `chroot()`" を単に

> `

>     HOME_DIRECTORY_OF_ftp-ACCOUNT/HOSTNAME_THE_USER_TALKS_TO/

> `

としないで、

> `

>     HOME_DIRECTORY_OF_ftp-ACCOUNT/

> `

とするものです。

以下の例では anonymous ftp 経由で "ftp.swindlers.com" に接続している ユーザーは "/home/ano-ftp/" でなく "/home/ano-ftp/ftp.swindlers.com/" に接続されます。 基本的な設定は単純で、通常の一つだけの anoymous ftp-account の設定と 大きく違わないことが分かるでしょう。

この簡単で効率的な設定方法を考えた Brian に賞賛を！

このパッチを当てたスペシャル版の wu-ftpd を既に自分でコンパイルしている かバイナリを入手していることを確認したうえで、取り敢えず他の疑問点は すべてこのドキュメントの最後までおいておきましょう。

まず現実的な例を示したうえで、著者があるお客様のためにどのようにしたか 紹介します（ただマシン名を架空のものにしただけです）。

- (a) 異なる anonymous ftp サーバーを構成するため "`/home/ano-ftp`" ディレクトリを作成します。

  > `

  >     mkdir  /home/ano-ftp  &&  cd /home/ano-ftp
  >     mkdir  ftp.sharpers.com  ftp.usurers.com  ftp.swindlers.com

  > `

  作成したディレクトリ構成は以下のとおりです：

  > `

  >     /home/ano-ftp/
  >               |-- ftp.sharpers.com
  >               |-- ftp.swindlers.com
  >               `-- ftp.usurers.com

  > `

- (b) anonymous ftp サービスに必要なファイルを既に設定してある anonymous-ftp ディレクトリ "`/home/ftp`" から、新たに 作成したディレクトリにコピーします。

  > `

  >     cd     /home/ano-ftp/ftp.sharpers.com
  >     cp -a  /home/ftp/* .

  >     cd     ../ftp.swindlers.com
  >     cp -a  /home/ftp/* .

  >     cd     ../ftp.usurers.com
  >     cp -a  /home/ftp/* .

  > `

  "`pub/`" にある不要なファイルを後で削除するのを忘れないように しましょう（あるいははじめからコピーしない）。 参考として Debian 配布パッケージでの "/home/ftp" を紹介します：

  > `

  >     /home/ftp                       Permissions    Owner  Group   Size
  >             |-- bin                 d--x--x--x   2 root   root
  >             |   |-- gzip            ---x--x--x   1 root   root   45121
  >             |   |-- ls              ---x--x--x   1 root   root   22945
  >             |   `-- tar             ----------   1 root   root   77769
  >             |
  >             |-- etc                 d--x--x--x   2 root   root
  >             |   |-- group           -r--r--r--   1 root   root      18
  >             |   |-- passwd          -r--r--r--   1 root   root      44
  >             |   `-- pathmsg         -r--r--r--   1 root   root     172
  >             |
  >             |-- lib                 d--x--x--x   2 root   root
  >             |   |-- ld-linux.so.1   -r-xr-xr-x   1 root   root   21375
  >             |   |-- libc.so.5.2.18  -rwxr-xr-x   1 root   root  536252
  >             |   `-- libc.so.5 -> libc.so.5.2.18
  >             |
  >             |-- pub                 dr-xr-xr-x   3 root   root
  >             |   `-- whatever
  >             |
  >             `-- welcome.msg         -rw-r--r--   1 root   root     323

  > `

- (c) "`/etc/passwd`" ファイルを編集して anonymous ftp アカウント のホーム ディレクトリを "`/home/ano-ftp`" に変更します。

  > `

  >     ftp:*:11:11:Anonymous FTP:/home/ano-ftp:/bin/sh
  >                               ^^^^^^^^^^^^^
  >                               ホームディレクトリ

  > `

  以上の3ステップが基本設定で、これで3つの仮想ホストはそれぞれ分けら れた ftp エリア を使用できます。 著者の場合、本当の作業はここからで、それぞれの incoming ディレクトリ 毎にディスク割当量を設定（各グループにディスクスペースの使用量を 制限）しなければならなかったのでちょっと複雑になります。

- (d) wu-ftpd の設定ファイル "`/etc/ftpd/ftpaccess`" で upload エリア を使えるようにします。

  > `

  >     upload  /home/ano-ftp/www.sharpers.de  *         no
  >     upload  /home/ano-ftp/www.sharpers.de  /incoming yes sharpers ftp 0660 nodirs
  >     upload  /home/ano-ftp/www.swindlers.de *         no
  >     upload  /home/ano-ftp/www.swindlers.de /incoming yes swindler ftp 0660 nodirs
  >     upload  /home/ano-ftp/www.usurers.de   *         no
  >     upload  /home/ano-ftp/www.usurers.de   /incoming yes usurers  ftp 0660 nodirs
  >     #                                                |      |      |    |     |
  >     #                           アップロードの許可 --+      |      |    |     |
  >     #         アップロードファイルのオーナーを設定 ---------+      |    |     |
  >     #         アップロードファイルのグループを設定 ----------------+    |     |
  >     #   アップロードファイルのアクセス許可権の設定  --------------------+     |
  >     #                     ディレクトリの作成不許可 ---------------------------+

  > `

  これで ftp サーバーにアップロードされるファイルはそれぞれ異なる ユーザーに属するようになり、ディスク割当量の設定が行えるように なります。

- (e)ディスク割当量の設定

  まずは "`/usr/doc/quotas.txt`" と Linux "Quota mini-HOWTO ( 日本語訳)" を参照しま しょう。

  - * "`/etc/fstab`" の "`/home/an-ftp`" パーティションの マウントオプション に"`usrquota=/etc/quota/ano-ftp.users`" を追加します。
  - * "`touch`" コマンドで "`/etc/quota/ano-ftp.users`" を作成します。
  - * "`quotaon`" を実行して割当てを有効にします。
  - * 割当てを "`edquota swindlers`" 等で設定します。

    `user swindlers` の割当て:

    > `

    >     /dev/sdb8: blocks in use: 0, limits (soft = 0, hard = 10000)
    >                inodes in use: 1, limits (soft = 0, hard = 1000)

    > `

    対応するディスクスペースはファイルシステム作成時のブロックサイズ により異なります（標準は １ブロック = 1 kb)。

次のページ 前のページ 目次へ