11.5. 匿名 FTP を有効にする

Turbolinux 10 Server の /etc/proftpd/proftpd.conf には、すでに匿名 FTP サイトを公開するための設定が記述されています。以下のように、<Anonymous ~ftp> と </Anonymous> で囲まれた箇所が匿名 FTP サイトを公開するための記述です。ただし、初期設定では匿名 FTP サイトは機能していません。以下で解説する手順に従い、匿名 FTP サイトを有効にする必要があります。設定ファイルについては 項11.4 もあわせて参照してください。

<Anonymous ~ftp>
  User				ftp
  Group				ftp
  UserAlias			anonymous ftp
  #RequireValidShell           off
  MaxClients			10 "Sorry, max %m users -- try again later"
  DisplayLogin			welcome.msg
  DisplayFirstChdir		.message
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>

匿名 FTP サイトを有効にするには、RequireValidShell ディレクティブの値を off に設定します。初期設定ではコメントにされていますので、以下のようにコメントをはずします。

RequireValidShell     off

次に変更を反映するために proftpd を再起動します。

# /etc/init.d/proftpd restart

これで、匿名 FTP サイトへのアクセスが有効になりました。FTP クライアントで匿名 FTP サーバーへログインするには、ユーザー名に anonymous または ftp 、パスワードには慣例として E-mail アドレスを入力します。以下は、lftp クライアントでログインした例です。

$ lftp ftp@ftp.example.com
Password:
lftp ftp@ftp.example.com:~> ls
drwxr-x---   2 ftp      ftp          4096 Aug  3 16:38 incoming
dr-xr-x---   2 ftp      ftp          4096 Aug  3 16:38 pub

ティップ

ユーザーのログインディレクトリは、/var/ftp となります。proftpd は、このディレクトリに chroot するため、匿名 FTP サイトにログインしたユーザーは、/var/ftp ディレクトリがルートディレクトリに見えます。

もし、匿名 FTP サイトだけを提供したいのであれば、server config コンテキストに以下の Limit ディレクティブを記述します。

<Limit LOGIN>
  DenyAll
</Limit>

次に、Anonymous ディレクティブ内に以下の Limit ディレクティブを記述します。

<Limit LOGIN>
  AllowAll
</Limit>

これにより、Turbolinux 10 Server にアカウントを持つユーザーであっても、自分のホームディレクトリへのログインは拒否されるようになります。

その他、Anonymous ディレクティブで使用されているディレクティブの意味は以下の通りです。

Anonymous root-directory

匿名 FTP サイトとして公開するルートディレクトリを root-directory に指定します。~ を記述した場合は、続くユーザーのホームディレクトリを意味します。この例では、~ftp と指定されていますので、ftp ユーザーのホームディレクトリをあらわします。Turbolinux 10 Server の /etc/passwd ファイルには以下のように記述されているため、/var/ftp ディレクトリが 匿名 FTP サイト のルートディレクトリとなります。

ftp:x:14:50:FTP User:/var/ftp:

User userid / Group groupid

ProFTPD のサーバープロセスを実行するユーザーとグループを指定します。この例では、ftp と指定されていますので、ユーザーが匿名 FTP ユーザーでログインすると、proftpd デーモンの UID と GID は ftp に切り替わります。

UserAlias login-user userid

システムに存在するユーザーに対するエイリアスを指定することができます。login-user で指定したユーザー名で FTP サーバーにログインすると、あたかも実際のユーザーである userid でログインしたかのように動作します。この例では、ftp ユーザーに anonymous というエイリアスを定義していますので、anonymous ユーザーで匿名 FTP サイトへログインできるようになります。

RequireValidShell on|off

ProFTPD の初期設定では、ユーザーのログインシェルが /etc/passwd に設定されていなければログインを拒否しますが、この設定を off にするとログインは許可されます。初期設定ではコメントになっていますので、匿名 FTP サイトを有効にするにはコメントを外します。

MaxClients number|none [message]

Anonymous FTP サーバーへログインすることが可能なクライアントの最大数を指定しています。Turbolinux 10 Server の初期設定では、10 が指定されています。この数を超えるクライアントがログインを試みたときには、以下のメッセージを表示し切断します。

Sorry, max 10 users -- try again later

DisplayLogin filename

ユーザーがログインしたときに表示するメッセージを記述したテキストファイル名を指定します。初期設定は、/var/ftp/welcome.msg です。

DisplayFirstChdir filename

ディレクトリを変更したときに表示するメッセージを記述したテキストファイル名を指定します。初期設定は、.message です。

Limit command [command2 ..]

Limit ディレクティブは、FTP コマンドにアクセス制限をかけるために使用します。この例では、ディレクトリへの書き込みを完全に拒否する設定をしています。Limit ディレクティブについては、項11.4.3 を参照してください。

11.5.1. /var/ftp/incoming ディレクトリについて

匿名 FTP サイトを有効にすると、Anonymous ディレクティブの指定に従い、ftp ユーザーのホームディレクトリ /var/ftp がルートディレクトリとして公開されます。Turbolinux 10 Server では、このディレクトリに以下 2 つのディレクトリがあらかじめ存在しています。

drwxr-x---   2 ftp      ftp          4096 Aug  3 16:38 incoming
dr-xr-x---   2 ftp      ftp          4096 Aug  3 16:38 pub

この中で、incoming ディレクトリは、匿名 FTP ユーザーにファイルのアップロードを許可するディレクトリとして使用されることがあります。一般的には、不特定多数のユーザーにファイルのアップロードを許可することはありませんが、必要に応じて、このディレクトリを利用することも可能です。ただし、Turbolinux 10 Server の初期設定では、/var/ftp ディレクトリに対する書き込みは全て禁止されていますので、アップロードを許可するには、以下のような設定を /var/ftp/incoming ディレクトリに対して行う必要があります。

<Anonymous ~ftp>

省略...

  <Limit WRITE>
    DenyAll
  </Limit>

  <Directory incoming/*>
    <Limit READ>
      DenyAll
    </Limit>

    <Limit STOR>
      AllowAll
    </Limit>
  </Directory>
</Anonymous>

<Directory incoming/*> で incoming ディレクトリに対する設定を行うことを定義しています。そして、この Directory ディレクティブの中にある最初の Limit ディレクティブでは、ファイルの読み出しを行う FTP コマンド(READ)を全て拒否しています。しかし、次の Limit ディレクティブでファイルのアップロード(STOR)に関するコマンドを許可しています。したがって、この設定例では、匿名 FTP ユーザーが incoming ディレクトリへファイルをアップロードすることを可能にしますが、incoming ディレクトリにアップロードされたファイルを読み出す権限までは与えていないことになります。