proftpd の導入と利用


Last update: 2005/09/02 by Takatama

予備機へのproftpd 1.2.10rc3のインストール方法です.

インストール当時の最新版は1.3.0rc3でしたが,設定ファイルの書き方が不慣れだったので,1.2系を利用しました.来年の最構築時には最新版を使いましょう.


目次

準備

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

  • ftp://ftp.ep.sci.hokudai.ac.jp/pub/proftpd/distrib/source/ (地球惑星科学専攻)
  • ftp://ftp.jp.proftpd.org/pub/proftpd/distrib/source/ (ProFTFD 日本の本家)

ソースのファイル名は proftpd-?.?.?.tar.gz ( ? には数字が入る)

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

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

インストール

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

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

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

# cd proftpd-1.2.10rc3
# ./configure
# make
# make install

環境設定

ユーザ"ftp"の追加

# adduser ftp

パスワードは適当につける(ユーザ名 ftp のパスワードは使うことはない.) adduser 時に聞かれる項目に関する答えは適当でよい.

ディレクトリの作成

(ANONYMOUS) FTP サービスのために必要な二つのディレクトリを作成する.

# mkdir /home/ftp/pub
# mkdir /home/ftp/incoming

pubは公開用ディレクトリ,incomingはファイルの書き込みのみができる受信用のディレクトリであるが,こちらは作成するだけで利用することはない.

/etc/group の編集

# emacs /etc/group

ファイルの中の以下の記述を見つけ書き換え,保存

(変更前) ftp:x:????:
(変更後) ftp:x:14:

(注) gate との兼ね合いで問題あり??? 来年度は要検討です

/etc/passwd ファイルの編集

# emacs /etc/passwd

ファイルの中の以下の記述を見つけ書き換え,保存

(変更前) ftp:x:????:????:ftp,,,:/home/ftp:bin/bash
(変更後) ftp:x:14:14:anonymous:/home/ftp:/bin/false

/home/ftp/ のパーミッション変更

# chmod -R 755 /home/ftp/

ProFTPD 設定ファイルの編集

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

# cd /usr/local/etc/
# cp proftpd.conf proftpd_org.conf
# emacs proftpd.conf
編集前の proftpd.conf  -->  編集後の proftpd.conf
※ 変更点
  • 20行目付近に「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>
      DenyAll
     </Limit>
    </Directory>

動作確認

ProFTPD の起動

以下のように入力すると,proftpd が動き出す.

$ sudo /usr/local/sbin/proftpd

ProFTPD の停止

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

$ ps aux |grep proftpd

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

nobody xxx 0.0 0.0 1948 288 ? S 2003 0:22 proftpd: (accepting connections)
shido ????? 3.0 0.1 2468 728 pts/1 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

というふうに表示されれば,FTPサーバからファイルをダウンロード中のユーザがいるので, ProFTPDを停止するのをしばらく待ってもいいだろう.

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

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

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

動作確認

以下のように入力し,自分から自分に 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 はうまく動いていると考えられる.

LAN内の別のマシンからも,適当なFTPクライアントを用いて,アドレスの部分にmidoriのプライベートIPまたはmidori.ep.sci.hokudai.ac.jpを入力し,ANONYMOUS FTP 接続ができるか確かめればよい.

起動スクリプトの作成

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

# emacs /etc/init.d/proftpd

以下のように編集

#! /bin/bash
# proftpd start script
# 2005/05/11 takatama
/usr/local/sbin/proftpd

パーミッションを変更

# chmod 755 /etc/init.d/proftpd

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

# cd /etc/rc2.d/
# ln -s ../init.d/proftpd S80proftpd
# ls -al S80proftpd
lrwxrwxrwx 1 root root 17 S80proftpd -> ../init.d/proftpd

# cd /etc/rc3.d/
(RUNLEVEL 3-5 も同様)
この数字(2-5)は RUNLEVEL に対応する. 2-5 はマルチユーザモード, 0 は halt, 1 は single user mode, 6 は reboot に対応する.

[back] [top]