ProFTPD の導入と利用


FTP デーモンに ProFTPD を使います.

現在のバージョンは 1.3.0a です.


準備

以下の FTP サイトのいずれかから ProFTPD のソースをダウンロードする.

epftp サーバからダウンロードする場合の手順は

$ ftp green
Name : anonymous
Password : メールアドレス
ftp> cd pub/proftpd/distrib/source/
ftp> ls
ftp> get proftpd-?.?.?.tar.gz
ftp> quit

とすればよい.

特別な理由がない限り,更新日時が一番新しいものをダウンロードする. ダウンロード先のディレクトリは自分のホームディレクトリ (2006年度の場合は /home/kanenari/) とする.

以下,1.3.0rc4 をダウンロードしたとして, 説明をする.

インストール

ソースファイルを移動し,展開する.

$ sudo -s
# cp proftpd-1.3.0rc4.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar -zxvf proftpd-1.3.0rc4.tar.gz

展開により出来たディレクトリで, インストールを実行.

# cd proftpd-1.3.0rc4
# ./configure
# make
# make install

ProFTPD 設定ファイルの編集

ProFTPD の設定ファイルである, /usr/local/etc/proftpd.conf を編集する. まずは,作業ディレクトリに移動し, バックアップをとり.その後で編集する.

# cd /usr/local/etc/
# cp proftpd.conf proftpd_org.conf
# emacs proftpd.conf

動作確認

ProFTPD の起動

以下のように入力すると,ProFTPD が起動する.

# /usr/local/sbin/proftpd

または, 起動スクリプトを使っても良い.

# /etc/init.d/proftpd start

ProFTPD の停止

ProFTPD を落とすには,プロセスを kill する.

$ ps aux |grep proftpd

とすれば,proftpd のプロセス番号( xxx の部分に表示されるやつ)を調べると同時に, FTP サーバからデータを収得中のユーザがいないかどうかを確認できる.

nobody xxxx 0.0 0.2 3040 1404 ? Ss Mar17 0:22 proftpd: (accepting connections)
kanenari ??? 0.0 0.1 2636 764 pts/0 S+ 23:51 0:00 grep proftpd

とだけ表示されれば,FTP サーバを利用中のユーザはいないので,問題なく ProFTPD を停止させることができる.

nobody xxx 0.0 0.0 1948 288 ? S 2003 0:22 proftpd: (accepting connections)
ftp ????? 0.0 0.2 2280 1032 ? S Jan11 0:00 proftpd: ftp - hogehoge.ne.jp:
anonymous/shido@ep.sci.hokudai.ac.jp: IDLE
shido ????? 3.0 0.1 2468 728 pts/1 S 23:51 0:00 grep proftpd

というふうに表示されれば,FTP サーバを利用中のユーザはいるものの,IDLE 中であるので, ProFTPDを停止させることができる.

nobody xxx 0.0 0.0 1948 288 ? S 2003 0:22 proftpd: (accepting connections)
ftp ????? 0.0 0.2 2280 1032 ? S Jan11 0:00 proftpd: ftp - hogehoge.ne.jp:
anonymous/shido@ep.sci.hokudai.ac.jp: IDLE
ftp ????? 1.6 0.1 2052 948 ? S Jan11 0:02 proftpd: ftp - hogehoge.ne.jp:
anonymous/shido@ep.sci.hokudai.ac.jp: RETR /.hd03/Linux/Debian/debian-misc/debian-cd/woody-m68k-1.iso
shido ????? 0.0 0.1 2468 728 pts/1 S 00:02 0:00 grep proftpd

というふうに表示されれば, ダウンロード中のユーザがいるので, ProFTPD を停止するのをしばらく待つ.

調べたプロセス番号を用いて

# kill -TERM xxx (xxx は proftpd のプロセス番号)

とすれば,ProFTPD を停止させることができる.

または, 起動スクリプトを使っても良い.

# /etc/init.d/proftpd stop

動作確認

以下のように入力し,自分から自分に anonymous ftp ログインできるか確かめる.

$ ftp localhost

Name が聞かれるので,anonymous (or ftp)と答える. パスワードは 自分のメールアドレスとする.

230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

と表示されれば, ProFTPD はうまく動いていると考えられる.

別のマシンからも, 適当なFTPクライアントを用いて, アドレスの部分に midori.ep.sci.hokudai.ac.jpを入力し,Anonymous ftp 接続ができるか確かめる.

起動スクリプトの作成

サーバの起動(再起動)と同時に ProFTPD が起動するように設定する.

# emacs /etc/init.d/proftpd

以下のように編集

/etc/init.d/proftpd

パーミッションを変更

# chmod 755 /etc/init.d/proftpd

/etc/rc[2-5].d/ の下に作成したスクリプトへのリンクを置く.

# update-rc.d proftpd 80 2 3 4 5 .

この数字(2-5)は RUNLEVEL に対応する. 2-5 はマルチユーザモード, 0 は halt, 1 は single user mode, 6 は reboot に対応する.

ログの設定

xferlog の肥大化対策

FTP サーバのログは /var/log/xferlog に置かれます. しかし, このままだと xferlog が肥大化してしまうので logrotate を用いてログを分割します.

/etc/logrotate.conf の設定

/etc/logrotate.conf を編集します.

# emacs /etc/logrotate.conf

ログを 1 週間ごとにローテンションし, 60 週分保存します. 以下のように変更します.

# rotate log files weekly
weekly

# keep 60 weeks worth of backlogs
rotate 60

# packages drop log rotation information into this directory
include /etc/logrotate.d

/etc/logrotate.d/proftpd の設定

/etc/logrotate.d/proftpd を作成します.

# emacs /etc/logrotate.d/proftpd

そして, 以下のように書き込みます.

/var/log/xferlog {
 weekly
 missingok
 postrotate
  /usr/bin/kill -HUP `cat /var/run/proftpd.pid 2>/dev/null` 2>/dev/null || true
 endscript
}

/etc/cron.daily/logrotate の設定

/etc/cron.daily/logrotate を編集します.

# emacs /etc/cron.daily/logrotate

logrotate を起動し, /etc/logrotate.conf を読み込むよう設定します.

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

これでログが 1 週間ごとに分割されて保存されるようになります.


次に, ミラーリングソフトの fmirror の設定を行います.


最終更新日: 2006/12/08 (兼成 智久)
Copyright (C) 2002- epftp. All rights reserved.