ProFTPD


ProFTPDについて

  • ProFTPDは、Apache等との組み合わせで使いやすいFTPサーバです。FreeBSDに付属のFTPサーバーを使用しても単純なanonymous ftpサービスを実現することができますが、より高機能なサーバを目指します。また、他にWu-FTPDが有名ですが設定がProFTPDに比べると難しそうなので、ここではProFTPDを使用しました。インフォサイエンスのProFTPD日本語訳のページが参考になります。


ProFTPDのインストール

  • まず、ProFTPDのページから最新版のtarballをダウンロードします。

    ・proftpd-1.2.4.tar.gz(2002年2月6日時点の最新版)

  • 以下の手順でインストールします。

    % tar zxvfp proftpd-1.2.4.tar.gz
    % cd proftpd-1.2.4
    % ./configure
    % make
    % su
    # make install
    


ProFTPDの設定(/usr/local/etc/proftpd.conf)

  • ProFTPDの設定ファイル「/usr/local/etc/proftpd.conf」は、以下の様にしました。注記以外はデフォルトのままです。「Group」はLinux等に合わせて、nobodyに変更しました。ユーザのホームディレクトリ以外にアクセスできない様に「DefaultRoot」の設定を追加しました。

    【/usr/local/etc/proftpd.conf】
    # This is a basic ProFTPD configuration file (rename it to 
    # 'proftpd.conf' for actual use.  It establishes a single server
    # and a single anonymous login.  It assumes that you have a user/group
    # "nobody" and "ftp" for normal operation and anon.
    
    ServerName			"ProFTPD Default Installation"
    ServerType			standalone
    DefaultServer			on
    
    # Port 21 is the standard FTP port.
    Port				21
    # Umask 022 is a good standard umask to prevent new dirs and files
    # from being group and world writable.
    Umask				022
    
    # To prevent DoS attacks, set the maximum number of child processes
    # to 30.  If you need to allow more than 30 concurrent connections
    # at once, simply increase this value.  Note that this ONLY works
    # in standalone mode, in inetd mode you should use an inetd server
    # that allows you to limit maximum number of processes per service
    # (such as xinetd)
    MaxInstances			30
    
    # Set the user and group that the server normally runs at.
    User				nobody
    Group				nobody   <--nogroupから変更
    
    # Normally, we want files to be overwriteable.
    <Directory /*>
      AllowOverwrite		on
    </Directory>
    
    # A basic anonymous configuration, no upload directories.
    <Anonymous ~ftp>
      User				ftp
      Group				ftp
      # We want clients to be able to login with "anonymous" as well as "ftp"
      UserAlias			anonymous ftp
    
      # Limit the maximum number of anonymous logins
      MaxClients			10
    
      # We want 'welcome.msg' displayed at login, and '.message' displayed
      # in each newly chdired directory.
      DisplayLogin			welcome.msg
      DisplayFirstChdir		.message
    
      # Limit WRITE everywhere in the anonymous chroot
      <Limit WRITE>
        DenyAll
      </Limit>
    
    </Anonymous>
    
    DefaultRoot			~   <--追加
    

  • 「/etc/ftpusers」に記述されているユーザはログインできません。私の場合は、以下の様になっていました。

    【/etc/ftpusers】
    # $FreeBSD: src/etc/ftpusers,v 1.6 1999/08/27 23:23:41 peter Exp $
    #
    # list of users disallowed any ftp access.
    # read by ftpd(8).
    root
    toor
    daemon
    operator
    bin
    tty
    kmem
    games
    news
    man
    bind
    uucp
    xten
    pop
    nobody
    


ProFTPDの起動と停止

  • ProFTPDの起動は、スーパーデーモン(inetd)経由で起動する方法と、スタンドアロンで起動する方法がありますが、ここでは、スタンドアロンで起動する場合を示します。以下のコマンドで起動します。

    % su
    # /usr/local/sbin/proftpd
    

  • 正常に起動された場合のプロセス状態は以下の様になります。

    # ps ax | grep proftpd
      628  p0  S+     0:00.01 proftpd: proftpd (accepting connections) (proftpd)
    

  • デバッグオプションを付けて起動すると、エラーメッセージを含む状態を表示する事ができます。起動後にクライアントからの接続を行った場合の表示は、以下の様になります。

    # /usr/local/sbin/proftpd -n
    taro.home - ProFTPD 1.2.4 (release) (built 2002年 2月 6日 水曜日 23時56分10秒 JST) standalone mode STARTUP
    taro.home (hiroshi.home[192.168.0.2]) - FTP session opened.
    taro.home (hiroshi.home[192.168.0.2]) - PAM(hnakamur): Permission denied.
    taro.home (hiroshi.home[192.168.0.2]) - USER hnakamur: Login successful.
    

  • ProFTPDを停止するには、killコマンドを実行します。

    # kill 628  <--プロセスID
    



クライアントからのアクセス

  • WindowsのFTPクライアントFFFTPからサーバに接続してみました。FFFTPの接続状況の表示は以下の様になりました。

    ホスト taro を探しています.
    ホスト taro (192.168.0.4 (21)) に接続しています.
    接続しました.
    220 ProFTPD 1.2.4 Server (ProFTPD Default Installation) [taro.home]
    >USER hnakamur
    331 Password required for hnakamur.
    >PASS [xxxxxx]
    230 User hnakamur logged in.
    >>CD B:\Upload
    >CWD /public_html
    250 CWD command successful.
    >PWD
    257 "/public_html" is current directory.
    



注意

  • FreeBSD附属のFTPサーバが起動される設定になっている場合は、それが起動されない様にします。「/etc/inetd.conf」のftp行に#を付加してコメントにします。

    【/etc/inetd.conf 修正部分】
    #ftp	stream	tcp	nowait	root	/usr/libexec/ftpd	ftpd -l
    

    ちなみにFreeBSD附属のFTPサーバにクライアントから接続すると、以下のメッセージが返ってきました。

    ホスト taro を探しています.
    ホスト taro (192.168.0.4 (21)) に接続しています.
    接続しました.
    220 taro.home FTP server (Version 6.00LS) ready.
    

  • ProFTPDを起動した時に、接続が拒否されてしまう事がありました。表示されるメッセージによると「/etc/shutmsg」が存在すると、全ての接続を拒否する様です。その場合は「/etc/shutmsg」を削除するとOKになりますが、「/etc/shutmsg」が作成される原因はよく判りません。

    # /usr/local/sbin/proftpd -n
    taro.home - ProFTPD 1.2.4 (release) (built 2002年 2月 6日 水曜日 23時56分10秒 JST) standalone mode STARTUP
    taro.home - /etc/shutmsg present: all incoming connections will be refused.
    
    # rm /etc/shutmsg
    



トップへもどる


Copyright (c) 2002 Hiroshi Nakamura. All rights reserved.