FreeBSDでanonymous FTPサーバを構築するには

最近はanonymous FTPを立てることは少なくなった。
とはいっても、たまにはあるわけで、その時のためにメモする。
http://www.freebsdnews.net/index.phpの記事をベースにしています)

手順としては、anonymous FTP用のユーザを作っておき、ディレクトリの準備などをした後に、ftpdを-Aオプションで起動するという流れ。


◎ユーザの追加
シェルは/sbin/nologinにしておくこと。

# adduser
Username: ftp
Full name: Anonymous FTP user
Uid (Leave empty for default):
Login group [ftp]:
Login group is ftp. Invite ftp into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: nologin
Home directory [/home/ftp]: /var/ftp
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]: no
Username   : ftp
Password   : 
Full Name  : Anonymous FTP user
Uid        : 1002
Class      :
Groups     : ftp
Home       : /var/ftp
Home Mode  :
Shell      : /usr/sbin/nologin
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (ftp) to the user database.
Add another user? (yes/no): no
Goodbye!

ディレクトリの作成
ユーザ作成時に指定したホームディレクトリを作る。
ここがftpユーザにとってはルートディレクトリとなる。

# mkdir -p /var/ftp/pub
# chown ftp:ftp /var/ftp/pub

◎メッセージの作成
下記二つのファイルを、必要であれば修正。
まあ自分用ならいらないか。

/etc/ftpwelcome : ログイン前に表示されるメッセージ
/etc/ftpmod : ログイン後に表示されるメッセージ


◎inetd.confの修正

# echo "ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -S -A -r" \
>> /etc/inetd.conf

ここで、オプションは下記の通りなので、適宜書き換え。

-l ftpログインを記録する。
-r 読み取りのみ
-A anonymous FTP接続のみ許可
-S ユーザのダウンロード履歴を/var/log/ftpdに記録する。
  ただし/var/log/ftpdが存在していること。

◎ログ出力先の作成
Sオプションを指定している場合はログの書き込み先ファイルを作る。

# touch /var/log/ftpd

なお、-lで記録することになるログはsyslogに送られ、デフォルトでは/var/log/xferlogに記録される。本ファイルは改めて作らなくても最初からある。


◎起動
こちらのように、そのとき限りの起動の場合。

# /etc/rc.d/inetd onestart

リブート後も起動させておきたい場合

# echo 'inetd_enable="YES"' >> /etc/rc.conf
# /etc/rc.d/inetd start

以上