openssh の chroot 環境

必要だったので導入した。
rpm の openssh を削除し、openssh-5.1p1 あたりを落としてきて、コンパイル
sshd_config に、
User hogehoge
ChrootDirectory /home/hogehoge
等して ChrootDirectory を有効にしておく。


もちろん、そのまえに LinuxUser hogehoge を切っておくこと*1
で、これにより、ssh アクセス時には /home/hogehoge が / となって見えるわけだが、この /home/hogehoge owner は root ではないといけないらしい。しばしはまる。
後は、このユーザ hogehoge 向けのユーザランド構築用に /home/hogehoge/bin だの /home/hogehoge/home/hogehoge だのを作りまくる。
psql を動かせるようにするためには、/lib, /usr/lib 内のかなりの数のライブラリ群が必要となるので、併せて cp しておく。おっと、Perl 用の /lib/perl5/ も必要だったな。


で、httpd.conf を修正して、Document_root をこの chroot 環境に指定しなおせば、晴れて Jail 状態でサーバの shell を開放してやることができる。
自分的肝は、sshd を異なるポートで 2 つ起こしてやること。
こうしておけば、telnet を空ける必要もなく、rpm の opensshd を止めても作業が続行できる。

*1:/etc/passwd で $HOME を /home/hogehoge/./ として設定したが、これって何の意味があるのだっけかな