FTPサーバをwu-ftpdにする 2010.03.09  
 (Since 2003.11.10)

  → 更新履歴

●今回の目的
  FTPサーバを細かな設定が簡単に出来るwu-ftpdにしてみる.


●導入開始
1. ソースの準備
  下記の場所よりソースを取得し ~/work 配下に置く.
ソースの在り処と使用したVersion
wu-ftpd-2.6.2.tar.gz ftp://ftp.wu-ftpd.org/pub/wu-ftpd/


2. インストールの前に...
  アーカイブについてくる説明書(INSTALL)通りにやってもうまくいかなかったので調べてみたら, /usr/include/string.h で定義されている"strcasestr"と2重定義となりエラーとなることが判明. (FreeBSD4.6以降で確認.それ以前は知らん!)
ということなので一時的に /usr/include/string.h を編集し,make出来るようにする.

・/usr/include/string.hの編集
freebsd > su
freebsd # cd /usr/include
freebsd # cp -p string.h string.h.org
freebsd # vi string.h
  strcasestrのコメント化
freebsd # exit


3. インストール
  以下の手順で行う.ちょっと特化したやり方かも..
freebsd > cd ~/work
freebsd > tar zxvfp wu-ftpd-2.6.2.tar.gz
freebsd > cd wu-ftpd-2.6.2
freebsd > ./build fbs
freebsd > su
freebsd # ./build install
freebsd # exit
インストール(./build install)中にバイナリのインストール先が 表示されるのでチェックしておきましょう.


4. デーモンの起動設定
  標準のftpdからwu-ftpdに変更し,起動してみる
freebsd > su
freebsd # cd /etc
freebsd # vi inetd.conf
inetd.confの中身
  :
  :
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
ftp  stream tcp nowait root /usr/local/libexec/in.ftpd ftpd -al
  :
  :
一応,元々の設定はコメント化し残しておきます. バイナリのロケーションはインストール時に確認した場所に設定してください. defaultだときっと /usr/local/libexec/ にインストールされるとは思いますが...
ちなみに,各オプションの意味は..
 -a  ftpaccess を有効にする
 -l  ftpデーモンのログを出力する

ファイルの編集が終わったらいよいよ起動.
freebsd # kill -HUP `cat /var/run/inetd.pid`
freebsd # exit
正常に起動出来ているかは以下の手順で確認可能.
freebsd > ftp localhost
Connected to localhost.foo.com.
220 hoge.foo.com FTP server (Version wu-2.6.2(1) いまの時間) ready.
Name (localhost:user):
FTPサーバの名前がVersion wu-2.6.2(1)となっているかが肝!
ま,ちがうversionのものをインストールしてれば値は変わるんですが...

上記通りならFTPサーバの入替え&自動起動の設定は完了です.


5. 設定
  実はこの時点でログ(/var/log/messages)を見ると...
 cannot open access file /usr/local/etc/ftpaccess: No such file or directory
といったメッセージが出ていると思います. これは,wu-ftpdの設定ファイルである ftpaccess がみつかんないよ!というエラーメッセージ. ということでftpaccessを作ります.作り方は man ftpaccess で... と言っても英語で分からん!ので日本語の説明は こちらで.

freebsd > su
freebsd # cd /usr/local/etc
freebsd # vi ftpaccess
freebsd # exit
ftpaccessの設定例
guestuser *
realuser star

passive ports 0.0.0.0/0 7300 7500

class   all   real,guest,anonymous  *

limit   all   10   Any              /etc/msgs/msg.dead

readme  README*    login
readme  README*    cwd=*

message /welcome.msg            login
message .message                cwd=*

compress        yes             all
tar             yes             all

log commands real
log transfers anonymous,real inbound,outbound

shutdown /etc/shutmsg

email root@foo.com
ここに書いてあることは,ユーザは自分のホームディレクトリより上位の階層には行けない. が,starというユーザだけは上位に上がれちゃう. そして,パッシブモードの時は7300〜7500のポートを使うの. IPアドレスでのアクセス制限は0.0.0.0なので何処からでもアクセス可!
ということが書いてあります.詳しくは man で...

設定が完了したら,ftpaccessを読み込むためにinetdを再起動する事をお忘れなく...
そして,makeエラーを避けるために編集したstring.hも元に戻そう.
freebsd > su
freebsd # kill -HUP `cat /var/run/inetd.pid`
freebsd # cd /usr/include
freebsd # mv string.h.org string.h
freebsd # exit


●参考にしたもの
  wu-ftpd公式サイト
ftpアクセスを制限、制御するには


●改版履歴
 
2003.06.05  初版


 [ FreeBSD Top ]   [ This Site Top ]
Wrote by K.Teraki <master@prism-r.com>