12.5. 匿名 FTP を有効にする

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

<Anonymous ~ftp>
  User                          ftp
  Group                         ftp
  AccessGrantMsg                "Anonymous login ok, restrictions apply."
  RequireValidShell             off
  UserAlias                     anonymous ftp
  MaxClients                    10 "Sorry, max %m users -- try again later"
  DisplayLogin                  /welcome.msg
  DisplayFirstChdir             .message
  DisplayReadme                 README*
  DirFakeUser                   on ftp
  DirFakeGroup                  on ftp
  <Limit WRITE SITE_CHMOD>
    DenyAll
  </Limit>
  WtmpLog                       off
  ExtendedLog           /var/log/proftpd/access.log WRITE,READ default
  ExtendedLog           /var/log/proftpd/auth.log AUTH auth
</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:
drwxr-xr-x   4 ftp      ftp          4096 Nov  6 06:00 .
drwxr-xr-x   4 ftp      ftp          4096 Nov  6 06:00 ..
drwxr-xr-x   2 ftp      ftp          4096 Oct 19 10:59 pub
d-wx-wx--x   2 ftp      ftp          4096 Nov 14 00:52 uploads
-rw-r--r--   1 ftp      ftp           224 Jun 19 09:34 welcome.msg

ティップ

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

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

<Limit LOGIN>
  DenyAll
</Limit>

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

<Limit LOGIN>
  AllowAll
</Limit>

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

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

Anonymous root-directory

匿名 FTP サイトとして公開するルートディレクトリを root-directory に指定します。~ を記述した場合は、続くユーザーのホームディレクトリを意味します。この例では、~ftp と指定されていますので、ftp ユーザーのホームディレクトリをあらわします。Turbolinux 11 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 11 Server の初期設定では、10 が指定されています。この数を超えるクライアントがログインを試みたときには、以下のメッセージを表示し切断します。

Sorry, max 10 users -- try again later

DisplayLogin filename

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

DisplayFirstChdir filename

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

Limit command [command2 ..]

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

12.5.1. /var/ftp/uploads ディレクトリについて

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

drwxr-xr-x 2 root root 4096 2007-10-19 19:59 pub/
d-wx-wx--x 2 ftp  ftp  4096 2007-11-14 09:52 uploads/

この中で、uploads ディレクトリは、匿名 FTP ユーザーにファイルのアップロードを許可するディレクトリとして使用されることがあります。一般的には、不特定多数のユーザーにファイルのアップロードを許可することはありませんが、必要に応じて、このディレクトリを利用することも可能です。Turbolinux 11 Server の初期設定では、以下の記述がコメントとして用意されています。アップロードを許可するには、 <Directory uploads/*> から </Limit> のコメント記号を削除します。

<Anonymous ~ftp>

省略...

  <Limit WRITE>
    DenyAll
  </Limit>


  <Directory uploads/*>
    AllowOverwrite              no
    <Limit READ>
      DenyAll
    </Limit>

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


</Anonymous>

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