しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

chrootをなんとなく理解してみる

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
# /

binlib64しか移動していないので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

レンタルサーバーにある「他ユーザーのアクセスできるディレクトリを制限する」という機能はftpsshの設定ファイルにchrootを使う旨を書くと実現できます。

まとめ

chrootは難しいイメージありましたが、思ったより簡単に試す事ができました。 しかしプロセスが共有される事によるセキュリティー面の不安もあるし今はサーバーリソースも多いので仮想環境作るならVirtualBoxなどが安心だと思いました。