このスレッドは解決済です(未解決に戻す場合はこちら)

日時: 2009/02/01 14:14
名前: 豆だぬき
URL:
名前: 豆だぬき
URL:
stranger様、解説ありがとうございます。
OpenSSHが、4.9からchroot機能を持つようになって、パッチを当てたバージョンが出なくなりましたが、
だからといって、わざわざバージョンダウンして、パッチの入ったOpenSSHを使うのや、機能があるのにわざわざパッチを当てるのは、疑問が残ります。
試してないであれこれ言うのも失礼ですので、ちょっと試してみました。
なお、使用しているOSが違いますので、ディレクトリの位置が違っている所もあります。(参考にはなると思います。)
定義 * chrootユーザーは、chroot-userで括る。
* ユーザー名を、hogeとする。
sshd_configの設定
# vi /etc/ssh/sshd_config
(最終行に追加)
Match Group chroot-user
PasswordAuthentication no #(yesなら、パスワードでログイン)
ChrootDirectory /home/%u
chroot-userの定義
# vi /etc/group
chroot-user:*:601:
chroot-userの作成
# mkdir /home/hoge
# useradd -g chroot-user hoge
# passwd hoge
ユーザーhogeに必要なディレクトリの作成
# mkdir /home/hoge/home
# mkdir /home/hoge/home/hoge
# chown hoge:chroot-user /home/hoge/home/hoge
# mkdir /home/hoge/bin
# mkdir /home/hoge/etc
# mkdir /home/hoge/usr
# mkdir /home/hoge/usr/lib
# mkdir /home/hoge/usr/local
# mkdir /home/hoge/lib
(他に必要なディレクトリが有るかも?)
chrootに必要なファイルのコピー
# cp /bin/ksh /bin/sh /bin/cat /bin/chmod /bin/cp /bin/ls /bin/mkdir /bin/mv /bin/pwd /bin/rm /sbin/ping /usr/bin/touch /usr/bin/vi /home/hoge/bin/
(全部、/binかも…調べてね。)
# cp -R /usr/lib/* /home/hoge/usr/lib
(乱暴ですが、必要の無いファイルもコピーしています。)
(CentOSの場合、/usr/libではなく、/libと思われます。)
# cp /etc/passwd /home/hoge/etc/
# vi /home/hoge/etc/passwd
(hoge以外のユーザーを削除)
# cp /etc/group /home/hoge/etc/
# vi /home/hoge/etc/group
(chroot-user以外のグループを削除)
ユーザーhogeの公開鍵の登録
# mkdir /home/hoge/.ssh
# chmod 700 /home/hoge/.ssh/
# vi /home/hoge/.ssh/authorized_keys
(クライアント側で作成した公開鍵の中身をコピー)
# chmod 600 /home/hoge/.ssh/authorized_keys
# chown -R hoge:chroot-user /home/hoge/.ssh/
OpenSSHの再起動
hogeで、ログイン確認
# pwd
/home/hoge
# ls
(何も出ません)
# ls /home
hoge
(本来の位置なら登録されている管理者がユーザーとして表示されない)
以上の状態から、実際には、/home/hoge/home/hogeの位置にログインしていると思われます。
/binや/etc,/lib等で本来コピーすべきファイルは、当サイトのopenssh-chrootで作成されるファイルが参考になると思います。
取り合えず此処までですが、まだ完全な状態とはいえません。
また、かなり面倒なので、各種ディレクトリやファイルが、一括で作成されるユーザー登録用シェルスクリプトが、必要です。
※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。