INDEX
その他:4.7(ftpd セクション参照), 6.8, 7.7
OpenBSD ファイル転送サーバ (ftpd on OpenBSD 7.7)
OpenBSDのサーバ ftpd の設定。対象は、OpenBSD 7.7 ARMv7 on BBB。
ftpd の起動設定
自動起動
サーバが起動したときに ftpd も実行されるように、/etc/rc.conf.local に ftpd_flags を指定する。
# Internet File Transfer Protocol server ftpd_flags=
または、rcctl enable ftpd で有効にし、 rcctl set ftpd flags -l の様にフラグをセットする( /etc/rc.conf.local に ftpd_flags=-l が記載される)。
この時、anonymous FTP を無効にするには、-n オプションを付ける。逆に anonymous FTP のみとする場合は、-A オプションを付ける。
また、ftp のログを取るには、ftpd に -l オプションを指定する。-l の場合は、FTPのセッションを成功・失敗問わず記録する。-ll とした場合は、さらに操作(get, putなど)とその引数も記録する。
ftpd の設定
Welcome メッセージ
ftp でアクセスしたとき(認証前)、ログインしたとき、特定のディレクトリに移動したときにそれぞれメッセージを返せる。
/etc/nologin があると、その内容を表示して、終了される。
/etc/ftpwelcome があると、ftp でアクセスしたときにメッセージが返る。
anonymous FTP 以外の ftp でログインが成功すると /etc/motd が返される(デフォルトの設定、login.conf で指定)。
.message ファイルがディレクトリあると、そのディレクトリに入るときにメッセージが返る。
接続の拒否リスト
/etc/ftpusers に列挙されているユーザは、FTP 接続が拒否される。
また、起動オプション -m minuid で指定された値(デフォルト 1000)未満のユーザ(OpenBSD 5.6 以降)、標準シェル(/etc/shells の定義)になっていないユーザは、このリストに関係なく拒否される。
bbb# cat /etc/ftpusers # $OpenBSD: ftpusers,v 1.50 2014/03/17 21:01:02 sthen Exp $ # # list of users disallowed any ftp access. # read by ftpd(8). # by default, uids below 1000 are not permitted; see ftpd's -m option. nobody
chroot
/etc/ftpchroot に列挙されているユーザは、chroot によってルートがホームディレクトリに変更される。また、anonymous FTP のユーザ( ftp または anonymous )は、~ftp/ に chroot される。
chroot されると、パスワードファイル(/etc/passwd 正しくは、pwd.db)やグループファイル(/etc/group)などがないため、ユーザー名などが表示されない。必要に応じて、適切なファイルを作成する。
anonymous FTP
不特定多数に配布するためなどに利用される匿名のFTPサービス。
アノニマスFTPを利用するには ftp というユーザアカウントを用意する。そして、ftp ユーザのホームディレクトリに chroot され、そのユーザ権限で読み書きが行われる。
ftp ユーザの作成
今回は、ホームディレクトリは /var/ftp 、グループは users 、ログイン不可 で作成する。-m オプションをつけるとスケルトンを元にホームディレクトリを作成するので、付けずに実行する。
bbb# useradd -b /var -s /sbin/nologin -g users -c "anonymous ftp" ftp useradd: Warning: home directory `/var/ftp' doesn't exist, and -m was not specified
アノニマスFTPのディレクトリ作成
ftp ユーザのホームディレクトリ /var/ftp 、配下に、ユーザ・グループファイルを置く etc と 慣例的に pub を作成する。
bbb# mkdir -p /var/ftp/{pub,etc}
bbb# chown -R root:wheel /var/ftp
bbb# ls -l /var/ftp
total 8
drwxr-xr-x 2 root wheel 512 Jul 7 22:15 etc
drwxr-xr-x 2 root wheel 512 Jul 7 22:15 pub
passwd と group 作成
ls コマンドで表示する際に番号でなく、ユーザ名・グループ名で表示されるように passwd (pwd.db) と group を作成する。
bbb# grep /etc/group -e "^wheel" -e "^users" > /var/ftp/etc/group bbb# grep /etc/master.passwd -e "^root" -e "^ftp" > /var/ftp/etc/master.passwd bbb# pwd_mkdb -d /var/ftp/etc /var/ftp/etc/master.passwd bbb# ls -l /var/ftp/etc total 168 -rw-r--r-- 1 root wheel 35 Jul 7 22:18 group -rw------- 1 root wheel 162 Jul 7 22:18 master.passwd -rw-r--r-- 1 root wheel 40960 Jul 7 22:18 pwd.db -rw-r----- 1 root _shadow 40960 Jul 7 22:18 spwd.db bbb# rm /var/ftp/etc/master.passwd /var/ftp/etc/spwd.db bbb# ls -l /var/ftp/etc total 84 -rw-r--r-- 1 root wheel 35 Jul 7 22:18 group -rw-r--r-- 1 root wheel 40960 Jul 7 22:18 pwd.db bbb#
確認
bbb# ftp localhost
Trying 127.0.0.1...
Connected to localhost..
220 bbb.local FTP server ready.
Name (localhost:bbb): anonymous
331 Guest login ok, send your email address as password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" is current directory.
ftp> ls
150 Opening ASCII mode data connection for '.'.
total 8
drwxr-xr-x 2 root wheel 512 Jul 7 22:23 etc
drwxr-xr-x 2 root wheel 512 Jul 7 22:58 pub
226 Transfer complete.
ftp> cd pub
250-
250- **** Public ftp Service ****
250-
250- Welcome to Public ftp Service.
250-
250 CWD command successful.
ftp> ls
150 Opening ASCII mode data connection for '.'.
total 4
-rw-r--r-- 1 ftp users 74 Jul 7 22:20 .message
226 Transfer complete.
ftp> bye
221 Goodbye.
bbb#
bbb# cat /var/ftp/pub/.message
**** Public ftp Service ****
Welcome to Public ftp Service.
bbb#
最終更新時間:2025年07月08日 12時34分35秒 指摘や意見などあればSandBoxのBBSへ。