!!!OpenBSD ファイル転送サーバ (ftpd on OpenBSD ==6.8== 7.0) {{category OpenBSD,nolink}}OpenBSDのサーバ ftpd の設定 * 関連 man → [ftpd(8)|https://man.openbsd.org/ftpd.8], [login(1)|https://man.openbsd.org/login.1] !!! 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)未満のユーザ、標準シェル(/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)やグループファイル(/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のディレクトリ作成 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#