INDEX
OpenBSD ファイル転送サーバ (ftpd on OpenBSD 6.8 7.0)
OpenBSDのサーバ ftpd の設定
ftpd の起動設定
自動起動
サーバが起動したときに ftpd も実行されるように、/etc/rc.conf.local に ftpd_flags を指定する。
# Internet File Transfer Protocol server ftpd_flags=
この時、anonymous FTP を無効にするには、-n オプションを付ける。逆に anonymous FTP のみとする場合は、-A オプションを付ける。
また、ftp のログを取るには、ftpd に -l オプションを指定する。-l の場合は、FTPのセッションを成功・失敗問わず記録する。-ll とした場合は、さらに操作(get, putなど)とその引数も記録する。
ftpd の設定
Welcome メッセージ
ftp でアクセスしたとき(認証前)、ログインしたとき、特定のディレクトリに移動したときにそれぞれメッセージを返せる。
/etc/nologin があると、その内容を表示して、終了される。
/etc/ftpwelcome があると、ftp でアクセスしたときにメッセージが返る。
ftp でログインが成功すると /etc/motd が返される(デフォルトの設定、login.conf で指定)。
.message ファイルがディレクトリあると、そのディレクトリに入るときにメッセージが返る。
接続の拒否リスト
/etc/ftpusers に列挙されているユーザは、FTP 接続が拒否される。
また、起動オプション -m minuid で指定された値(デフォルト 1000)未満のユーザ(OpenBSD 5.6 以降)、標準シェル(/etc/shells の定義)になっていないユーザは、このリストに関係なく拒否される。
# $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)などがないため、ユーザー名などが表示されない。必要に応じて、適切なファイルを作成する。
# $OpenBSD: ftpchroot,v 0.00 2001/01/01 01:01:01 sample Exp $ # # list of users (one per line) given ftp access to a chrooted area. # read by ftpd(8). chrooted-user
anonymous FTP
不特定多数に配布するためなどに利用される匿名のFTPサービス。
アノニマスFTPを利用するには ftp というユーザアカウントを用意する。そして、ftp ユーザのホームディレクトリに chroot され、そのユーザ権限で読み書きが行われる。
ftp ユーザの作成
今回は、ホームディレクトリは /var/ftp 、グループは users 、ログイン不可 で作成する。
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 Feb 26 20:45 etc
drwxr-xr-x 2 root wheel 512 Feb 26 20:45 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# bbb# ls -l /var/ftp/etc total 172 -rw-r--r-- 1 root wheel 35 Feb 26 20:52 group -rw------- 1 root wheel 162 Feb 26 20:52 master.passwd -rw-r--r-- 1 root wheel 40960 Feb 26 20:52 pwd.db -rw-r----- 1 root _shadow 40960 Feb 26 20:52 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 Feb 26 20:52 group -rw-r--r-- 1 root wheel 40960 Feb 26 20:52 pwd.db bbb#
確認
※ftpwelcome とホーム直下に .message を作成している。
bbb# ftp localhost Trying 127.0.0.1... Connected to localhost. 220- 220- ,'', ,', ,', 220- ; ; ; ; ; ; 220- ; ; ; ; ; ; ,'',,'', ,'', ,'',,'', ,'',,'', ,'',,'',,'', ,'',,'', 220- ; ; ; ; ; ; ; ;',,' ; ; ; ;',,' ; ;; ; ; ;', ;', ; ; ;',,' 220- ; ; ; ; ; ; ; ;',,' ; ; ; ; ; ;; ; ; ; ; ; ; ; ; ;',,' 220- ; ;,' ;,' ; ; ; ,, ; ;,'', ; ;,'', ; ;; ; ; ; ; ; ; ; ; ; ,, 220- ',,'',,'',,' ',,'',,' ',,'',,' ',,'',,' ',,'',,' ',,' ',' ',' ',,'',,' 220- 220 bbb.intranet 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> cd / 250- 250- **** Public ftp Service **** 250- 250- Welcome to Public ftp Service. 250- 250 CWD command successful. ftp> bye 221 Goodbye. bbb#
最終更新時間:2022年02月28日 22時03分55秒 指摘や意見などあればSandBoxのBBSへ。