关于chroot的简介,可以参考IBM开发者网站上的这篇理解chroot,本文演示了如何构造一个最简单的chroot环境,本文实验环境为CentOS 6.4 64bit。
[root@os ~]# dd if=/dev/zero of=123.img count=512K bs=20480
[root@os ~]# /sbin/mkfs.ext3 123.img
#格式化为ext3时可能会提示123.img is not a block special device.不用管它,直接按y继续
[root@os ~]# mkdir /mnt/123
[root@os ~]# mount -o loop 123.img /mnt/123
[root@os ~]# chroot /mnt/123
chroot: failed to run command `/bin/bash': No such file or directory
发生了错误,看来chroot环境不存在/bin/bash(事实也的确不存在),那我们从真实系统里拷贝一个过去吧:)
[root@os ~]# mkdir /mnt/123/bin
[root@os ~]# cp -av /bin/bash /mnt/123/bin/bash
[root@os ~]# chroot /mnt/123
chroot: failed to run command `/bin/bash': No such file or directory
错误依旧,原因是因为/bin/bash需要调用相关的库,因新环境不存在相关的库文件,因此bash不能运行,从而报上述错误,解决方法是利用ldd /bin/bash查找到其所需要的运行库
[root@os ~]# for i in `ldd /bin/bash`;do echo $i;done |grep -v = |grep -v 0x |grep /|xargs ls -l
lrwxrwxrwx. 1 root root 10 Oct 23 18:25 /lib64/ld-linux-x86-64.so.2 -> ld-2.12.so
lrwxrwxrwx. 1 root root 12 Oct 23 18:25 /lib64/libc.so.6 -> libc-2.12.so
lrwxrwxrwx. 1 root root 13 Oct 23 18:25 /lib64/libdl.so.2 -> libdl-2.12.so
lrwxrwxrwx. 1 root root 15 Oct 22 22:44 /lib64/libtinfo.so.5 -> libtinfo.so.5.7
把如上这些库文件和软链接全部都拷入新环境
[root@os ~]# mkdir /mnt/123/lib64/
[root@os ~]# cp -av /lib64/ld-linux-x86-64.so.2 /lib64/ld-2.12.so \
> /lib64/libc.so.6 /lib64/libc-2.12.so /lib64/libdl.so.2 \
> /lib64/libdl-2.12.so /lib64/libtinfo.so.5 \
> /lib64/libtinfo.so.5.7 /mnt/123/lib64 \
> /mnt/123/lib64
……
然后再试一次
[root@os ~]# chroot /mnt/123
bash-4.1# 切换成功!
bash-4.1# ls 切换过来任何命令都无法使用!
bash: ls: command not found
bash-4.1# exit 也可按Ctrl + D键退出环境
exit
[root@os ~]#
参考资料:http://g.51cto.com/mike/45296
我買了個contabo VPS
重裝系統后密碼不知道是什麽,我就按了rescue system
然後不是要重置密碼嗎
我就按照官方的文件輸入了 chroot 的命令
也出來這個error了
原因是因为/bin/bash需要调用相关的库,因新环境不存在相关的库文件,因此bash不能运行
這點我懂了
可是 又出現了一個 ls: cannot access ‘ldd’: no such file or directory