openssh 4.9以降でchroot ssh

4.9以降で、正式にchrootがサポートされた。sshd_configにChrootDirectoryの設定が追加されている。今までのopenssh-chrootパッチ適用とは設定が少し違うぽい。

特にsftpのみの場合、非常に簡単になった

Subsystem       sftp    internal-sftp
Match user  hoge
  ChrootDirectory /chroot1

とするだけ。

shellでのloginにchrootを適用する場合は、今までと同様chroot以下にbin、lib、dev以下のファイルなどが必要。

ref.

ChrootDirectory

ChrootDirectory /path/to/chroot

ここで指定するディレクトリはroot権限でのみ書き込みできる場所でないとダメ。

特定ユーザ/グループにのみchroot設定する
Matchキーワードを使う。

Match user  hoge
  ChrootDirectory /chroot1
Match group fuga
  ChrootDirectory /chroot2

/etc/passwdの設定

/etc/passwdにはchroot環境下でのユーザのホームディレクトリを指定する。
ex:

ChrootDirectory /chroot
hogeのhome directory /chroot/home/hoge

このとき、/etc/passwdには/home/hogeをホームディレクトリとしておく。/chroot/home/hogeではないの。

hoge:x:1000:1000::/home/hoge:/bin/bash

以前のchrootパッチ適用のopenssh-chroot版では/chroot/./home/hogeだったはず。

sftpの設定

上で書いたようにinternal-sftpを使う

Subsystem sftp internal