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
以上