2004/10/09

ProFTPDのインストールと基本設定

ファイル転送をするにはWEBDAVがあるので、FTPはいらないと思っていました。
しかし、使う側としては

  • FTPの方がクライアントソフトが充実している。
  • Windowsからの接続の場合、Windows標準のWEBDAVクライアントは使いにくい
等の理由から、まだまだFTPもニーズがあることを思い知りました。

FTPサーバーにはvsftpdやproftpd等選択肢がありますが、ProFTPdを選択しました。
理由としては、

  • 設定ファイルがApacheライクである事から馴染みやすい。
  • 設定が細かくできる。
等です。
後、ネットで調べると、どうもproftpdの方が評判が良かったのも決め手になりました。
まずは誰でも接続できるanonymous FTP の設定を行います。ただし、ファイルの編集は
行えないようにします。

ProFTPDのインストール

$ emerge -v  net-ftp/proftpd

インストールされたProFTPDのバージョンは1.2.10 でした。

ProFTPDの基本設定

インストールが完了すると、/etc/proftpd/proftpd.conf.distrib というファイルが
作成されています。このファイルを元にProFTPDの設定ファイル proftpd.conf を作成します。

$ cp /etc/proftpd/proftpd.conf.distrib  /etc/proftpd/proftpd.conf
設定ファイルの内容は下記の通りです。
#ServerTypeにstandaloneを指定している時の最大クライアント接続数
MaxInstances                    30

# ProFTPDを動作させるユーザーとグループを指定します。
User                            nobody
Group                           nogroup

# ユーザーがログインしたときのルートディレクトリを指定します。
DefaultRoot ~

#ファイルへの上書きを許可します。
AllowOverwrite          on

# ファイルのアクセス権変更を行う事を禁止しています。
<Limit SITE_CHMOD>
  DenyAll
</Limit>

# <Anonymous ~ftp>から</Anonymous>の間にAnoymous FTPに関する設定を指定します。
# Anoymous FTPとして使用するディレクトリを、ユーザー 'ftp' のホームディレクトリとして
# 設定しています。

<Anonymous ~ftp>

  #接続ユーザーのユーザーとグループを指定しています。
  User                          ftp
  Group                         ftp

  # anoymous でログイン時に ftp でのログインとみなす
  UserAlias                     anonymous ftp

  # 最大クライアント接続数
  MaxClients                    10

  # ログイン時に表示されるメッセージを記述したファイル名を指定します。
  DisplayLogin                  welcome.msg

 # 初めてディレクトリに移動したユーザーに表示するメッセージを記述した
  # ファイル名を指定します。
  DisplayFirstChdir             .message

  # ファイルへの書き込み、新規作成、削除を禁止しています。
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>

    #/etc/shellsにシェルが記述されていないユーザのログインを許可します。
    RequireValidShell off

・RequireValidShell off
この RequireValidShell off の指定がない場合は、クライアントからの接続に失敗しました。
/var/log/auth.log を確認すると、以下のログが記述されていました。
(syslog がインストールされている場合)
USER ftp (Login failed): Invalid shell: '/bin/false'
このログは /bin/false がログインシェルとして不正であると言うログです。
この場合、上記 RequireValidShell off の指定をする方法と、ログインシェルを登録する方法があります。
ユーザーが anonymous とし接続してきた場合、ユーザー ftp として動作します。
ユーザー ftp のログインシェルは /etc/passwd を参照する事で、確認できます。
以下は /etc/passwd の ユーザー ftp の部分のみを抜粋しました。
ftp:x:21:21::/home/ftp:/bin/false
上記例では、ユーザー ftp のログインシェルは /bin/false です。
/bin/false はサーバーを動作させためのユーザー等に指定されるシェルで
/bin/false がログインシェルに指定されたユーザーは、マシンにログインする事ができません。 このログインシェルを /etc/shell に登録する事で、問題は解決します。