chrootコマンド、仮想化環境を作れてレンタルサーバーとかで使われるらしいけどどんなものか分からない。と思い実際に動かしてみました。
chrootとは
ルートのディレクトリを変更してくれるコマンドです。
chroot /hoge
とやるとhogeがルートディレクトリになってくれます。
chrootをとりあえず動かしてみる
まずはルートにしたいフォルダを作成します。
> mkdir /chroot_test
次に必要なファイルと確認用のファイルを作成します。
/lib64
と/bin
がないとchroot: failed to run command /bin/bash': No such file or directory
エラーになります。
> cp /lib64 /chroot_test > cp /bin /chroot_test > touch /chroot_test/test_file
そしてchrootコマンドでルートディレクトリを変更します。
> chroot /chroot_test
これで/chroot_test
がルートディレクトリになりました。
pwdを打つと現在位置が/になってる事を確認できます。
> ls # bin lib64 test_file > pwd # /
bin
とlib64
しか移動していないのでyum等の別ディレクトリにある機能は使えません。
> yum # bash: yum: command not found
ちなみにシンボリックリンクはToo many levels of symbolic links
エラーが発生する為使えません。
> ln -s /lib /chroot_test/lib > chroot /chroot_test > ls lib # cannot access lib: Too many levels of symbolic links
レンタルサーバーにある「他ユーザーのアクセスできるディレクトリを制限する」という機能はftpやsshの設定ファイルにchrootを使う旨を書くと実現できます。
まとめ
chrootは難しいイメージありましたが、思ったより簡単に試す事ができました。 しかしプロセスが共有される事によるセキュリティー面の不安もあるし今はサーバーリソースも多いので仮想環境作るならVirtualBoxなどが安心だと思いました。