家に携帯を忘れたり、定期が切れててチャージが減り続けているのに気がつかなかったりしたとき、ふと空を見上げて気分を晴らしたいという需要があります。
例えばこんな感じの chroot する用のディレクトリ newroot があるとして、
(busyboxはstaticリンクしたものです)
# ls -lR newroot newroot: total 4K drwxrwxr-x 2 root root 4096 Mar 13 17:52 bin newroot/bin: total 1944K -rwxr-xr-x 1 root root 1984568 Mar 13 17:53 busybox lrwxrwxrwx 1 root root 7 Mar 13 17:49 ls -> busybox lrwxrwxrwx 1 root root 7 Mar 13 17:49 sh -> busybox
newroot に chroot してみます。
# pwd /home/hirose31/work/chroot # perl -e " chroot './newroot'; exec '/bin/sh' " \$
そして上を見てみます。
\$ ls / bin \$ ls /../ bin \$ ls ../ Dyna Loader libc.so newroot
おお。明日はいい日になりそうです。
教訓
chroot(2)のmanにも書いてありますが、chroot はカレントワーキングディレクトリは変更しないので、chroot するときは忘れず chdir しましょう。
# perl -e " chroot './newroot'; chdir '/'; exec '/bin/sh' " もしくは # perl -e " chdir './newroot'; chroot '.'; exec '/bin/sh' "