ProFTPD の導入と利用
FTP デーモンに ProFTPD を使います.
現在のバージョンは 1.3.0a です.
準備
以下の FTP サイトのいずれかから ProFTPD のソースをダウンロードする.
- epftp サーバ (green)
ftp://ftp.ep.sci.hokudai.ac.jp/pub/proftpd/distrib/source/
- ProFTPD 日本の本家
ftp://ftp.jp.proftpd.org/pub/proftpd/distrib/source/
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
- 30 行目付近に「DefaultRoot ~」という記述がなければ,追加する.
- <Anonymous ~ftp> から </Anonymous> までに細かな修正点がある.
- <Anonymous ~ftp> --> </Anonymous /home/ftp>
- UserAlias anonymous ftp の下に RequireValidShell off を追加.
- MaxClients 10 --> MaxClients 30
- <Limit WRITE>DenyAll</Limit> という記述を以下のように変更.
<Directory /home/ftp/*>
<Limit WRITE>
Deny All
</Limit>
</Directory>
動作確認
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.