■デフォルトの/etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server
#Subsystem sftp internal-sftp
■違いの説明
両方共、sshdのサブシステムなので、直接実行不可のため、「Subsystem」宣言で指定する
よって、上記の書き方になる。
SFTPでCHROOTさせる場合は、internal-sftpを使用する
(そうでないとエラーになる)
■詳細
・sftp-serverとinternal-sftpは、両方共OpenSSHのもの
・sftp-server
L スタンドアロンのバイナリ
・internal-sftp
L sshdにビルドインされているsftp(ということはsftpはsshdが入っていれば使える!)を使用するように
sshdに告げるための単なる合言葉
L ChrootDirectoryディレクティブを使用する場合は、こちらを有効にする(そうでないとエラーになる)
つまり、下記の設定
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftpuser
ChrootDirectory /var/www/home
■補足
ChrootDirectory で指定するディレクトリに対して、sshdは、上位のディレクトリの所有者が全てrootであるかどうかと
rootのみが書き込み権限を持っているかを確認する
よって、下記のようになる
○ rwxr-xr-x 3 root sftpuser 20 2月 27 01:19 home
✕ rwxrwxr-x 3 root sftpuser 20 2月 27 01:19 home
⇒ この場合、/var/log/secureに下記のようなエラーメッセージが出力されるはず
fatal: bad ownership or modes for chroot directory component "/var/www/home/" [postauth]