だいぶ久しぶりにsftpの設定をすることがあったので、自分用にまとめておく。 セオリーというか、一般的に行われている設定と同様にchrootをし、かつsftpのみ実行可能なユーザとする。 わざわざsftpに制限するユーザを作るので、ログインは鍵認証のみに制限する。 まず、以下のコマンドでユーザ(ここではsftpユーザ)の作成をしておく。

useradd sftp # -dでホームディレクトリを任意のディレクトリ
mkdir ~sftp/.ssh # .sshディレクトリを作成

ログイン元の公開鍵が/tmp/publicとして置いてあると仮定して、以下のように公開鍵設定をする。 設定完了...


chrootではシンボリックリンクが使えない。ならば…

FTPやsshで、ログインユーザーのルートディレクトリを変更する事が出来るのがchrootだ。
この機能、セキュリティを考慮してユーザーが出来る操作内容に制限を加えるには便利なんだけど、chrootで定義したルートディレクトリ外のシンボリックリンクへは利用出来ないという点がある。

シンボリックリンクを利用出来ない中、chrootのルートディレクトリより上位のディレクトリを参照させる場合、mountを用いる事で対処出来る。