SFTPのchroot設定方法~実践向け~

複数ユーザ間での特定ディレクトリ・ファイルの共用

複数のメンバーでwebコンテンツを編集する場合は、複数のアカウントでwebディレクトリにログインしてコンテンツをアップロードしたり、編集したいケースがあります。そんな場合は各ユーザアカウントをweb編集用グループに所属させて、webディレクトリにグループから書き込み可能な権限を付与して運用するケースが多いと思います。

OpenSSHのSFTP chrootが面倒くさい理由

さて、各ユーザをchrootさせたいとなった場合は工夫が必要になります。なぜなら、OpenSSHのサブシステムであるSFTPサーバ機能に備わっているchrootオプションを利用する場合は、chroot対象とするディレクトリが「rootユーザからのみ書き込みできる」必要があるためです。

上記の対策としてシンボリックリンクを活用することもできますが、現実的ではありません。なぜならば、chrootディレクトリより上位ディレクトリ(※)にあるディレクトリはシンボリックリンクとして利用できないためです。例えば/home/user01にchrootした場合は/var/www/htmlに対してはリンクを作成できません。

※相対パスが上位を経由するディレクトリも含む

そこでmountコマンドのオプションであるbindオプションを利用します。bindオプションを利用すると既にマウントされているディレクトリ内同士を再マウントできます。シンボリックリンクのようにinodeの参照してリンクするわけではないので、chroot環境でも関係なくリマウントが可能です。

★mount bindオプションのman抜粋

SFTP chroot環境作成の流れ

1.対象ディレクトリ(コンテンツを置きたい場所)の権限を確認

2.SFTP用ユーザを作成・パスワード設定・所属グループ編集

3.ディレクトリ編集用の権限を設定

4.Chroot用のディレクトリを作成

5.rootユーザのみに書き込み権限が付与されていることを確認する。

6.sshd.configファイルを編集

※いらないと記載のあるブログがあるが、設定しないと下記が出力されできなかった。うーんなぜ?

7.設定の読み込み

8.バインドマウントを実行

※アンマウントする場合は以下を実行

9.マウントされていることを確認

10.起動時に自動マウントが行われるようにfstabに記載

11.SSH接続できないことを確認

12.SFTP接続できることを確認

13.Chrootされていることを確認

14.ファイル作成確認

以上です。

Bookmark this on Google Bookmarks
LINEで送る
Pocket