wu-ftpd install and configuration
 wu-ftpd のインストールと設定
バナー

■概要

wu-ftpd はアクセス制限や回線速度制限など,標準の ftpd では実現できないような設定を提供します.
ISDN ユーザーにとっては,回線速度制限が一番の目玉かと思いますので,ぜひインストールすることをおすすめします.

なお,この wu-ftpd のインストールは,ftp デーモンが既に起動していて,anonymous FTP の設定が完了していることを前提に話を進めてゆきます.

■インストールは packages で

ソース取ってきてコンパイルしても良いのですが,面倒なので packages でやってしまいましょう.
packages/ftp/wu-ftpd_2_5_0.tgz があるので,そのディレクトリで

# pkg_add wu-ftpd_2_5_0.tgz

とでもするとインストールできます.

■ソースからインストールしてみる?

ソースからインストールする場合は,通常の configure; make; make install では正常にインストールできません.
INSTALL ドキュメントを見ていただければわかりますが,インストール時には ./build コマンドを使わないとインストールできません.
使用する OS は FreeBSD なので,以下のようにコマンドを叩いてください.

# ./build fbs

これで FreeBSD 版でコンパイルされます.
次に,もし最新版にアップグレードするならば,このときに/usr/local/etc/ftp* のバックアップを取っておきましょう.

そして以下のコマンドを叩いてインストールを実行します.

# ./build install

これで /usr/local/libexec/ に ftpd バイナリがコピーされます.
何処にどのファイルがコピーされるかは Makefile に記述してあります.
2.6.1 の FreeBSD インストールでは,

ftpd/usr/local/libexec/
このほかのバイナリ/usr/local/bin/
マニュアル/usr/local/man/maxX/
設定ファイル自前で /etc/ へコピー

設定ファイルは自前でコピーしなくてはならないので,以下のファイルを /etc/ にコピーしてください.

docs/examples/ftpaccess
docs/examples/ftpconversions
docs/examples/ftpgroups
docs/examples/ftphosts
docs/examples/ftpservers
docs/examples/ftpusers

設定ファイルの置き場所は configure ファイルを編集すれば変更できます.
詳しくは README.AUTOCONF を参照してください.

あとは /etc/inetd.conf を編集して,wu-ftpd が起動するように変更しましょう.
通常は ftpd が起動する設定になっているので,

ftp   stream   tcp   nowait   root   /usr/libexec/ftpd   ftpd

これを以下のように設定し直します.

ftp   stream   tcp   nowait   root   /usr/local/libexec/ftpd   ftpd -a -l

ftpd のオプション -a は ftpaccess ファイルを読み込んで,その内容に従ってアクセス制限を行います.
-l は /var/log/xferlog ファイルにログを記録するオプションです.

そして,inetd を再起動します.

# ps ax | grep inet
# kill -HUP "inetd のプロセス番号"

これで次からは wu-ftpd が起動します.

■syslog の設定

wu-ftpd のアクセス記録は syslog で記録するようにするので,/etc/syslog.conf を設定します.
以下の設定を /etc/syslog.conf の一番最後に記述してください.

!ftpd
*.*      /var/log/ftpd.log

これで syslog でのログファイルを吐くようになりますが,空のログファイルを生成しておかないとログを吐いてくれません.
ということで,空のファイルを生成しておきます.

# touch /var/log/ftpd.log

これで準備完了です.

■面倒な設定

wu-ftpd は,「そのいろいろとカスタマイズできる」という強みのため,かなり面倒な設定をしなければなりません.
ただし,一度設定を決めてしまうとあとは放ったらかしで OK なのでここは気合いをいれて行きましょう.

サンプルはこれをダウンロードしてください

必要最低限の設定は以下の通りです.

ただしこれだと 64Kbps ISDN だとスループット MAX になったときに外に出ていくのが大変だったりするので,できれば tcpwindow オプションや throughput オプションで速度規制を敷いた方がいいでしょう.

おすすめは上下ともに速度規制を敷くことの出来る tcpwindow ですが,「ダウンロードしかさせないぜ〜」という人は throughput オプションで各種設定を行うと良いでしょう.
(なんで throughput オプションは DL オンリーな設定なのだろうぶつぶつ・・・)

class   user   real,guest  *
class   anon   anonymous   *

readme  README*  login
readme  README*  cwd=*

message  /etc/msgs/welcome_anonymous.msg  login  anon
message  .message  cwd=*

compress   yes   all
tar        yes   all

log   commands    real,anonymous
log   transfers   anonymous,real   inbound,outbound

upload   /usr/ftp   /incoming   yes   ftp   operator   0664   dirs   0755

shutdown /etc/shutmsg

email griffon@os.xaxon.ne.jp

chmod   no  anonymous
umask   no  anonymous

設定項目の説明はサンプルファイルの中に嫌というほど書いているのでそれを参考にしてください.
Google で根性入れて調べていると,GeoCities に ftpaccess(8) を日本語化した HTML ベースの説明書がありました

■接続実験

anonymous で接続できるか,一般ユーザーで接続できるかを確認してください.
最小限の確認事項は,とりあえず anonymous で incoming/ にアップロードできるかどうか,一般ユーザーで自分のディレクトリにアップロードできるかどうかを確認すればよいでしょう.

◆番外編:chroot したときのファイル

一般ユーザーや anonymous を chroot すると,ディレクトリの位置が変わってしまうので etc/ や bin/ に入っているコマンドが使えません.
そこで各ユーザーディレクトリに etc/ や bin/ を掘って必要なファイルをコピーしなければなりません.
その手順を以下に記しますので参考にどうぞ.

*1:ここで使用するユーザーは griffon とする.
*2:ホームディレクトリは /home/ とする.

  1. /home/griffon/etc/bin/ を掘る.
  2. etc/ の中に /etc/passwd/etc/group をコピーする.
  3. bin/ の中に /bin/ls をコピーする.ついでなら /bin/gzip もどうぞ.
  4. 掘ったディレクトリのパーミッションを 111 (参照書き込み不可で実行のみ) にする.
これで完了です.
しかしこれはユーザーが多くなると酷な作業になるので,嫌な人は以下のスクリプトを使ってください.
突貫で仕上げたのでかなり面倒なことになっていますが,Perl がわかる人だけ使ってください.
サポートしません.質問不可.

自動コピースクリプト (要 Perl5)


←戻る Made with PC-9821Xt/C10W K.O.T.B.G. Special Tune Model "CAIT-SITH"
Made with Original Machine "MIRAGE"
Made by HyperEdit for Windows