使用chroot
来源:互联网 发布:matlab矩阵求导 编辑:程序博客网 时间:2024/06/07 23:55
chroot是一个比较有用的命令,它可以构造一个相对封闭的环境(sandbox),在这个封闭系统里运行命令而不必担心会对原有系统造成影响。
Linux/Unix系统里的每个命令或者进程,都有一个 当前的运行目录 (current working directory, i.e., root directory), 这个目录可以使用 chroot来改变。
chroot改变的目录后,在这个目录下面运行的进程无法不能访问 root directory 之外的文件。
下面以一个例子说明。
1. 创建目录 /home/charles/tmp/jail
这个目录将会作为一个封闭的测试环境。
2.在测试目录下创建子目录:
$ mkdir -v -p {bin,lib/i386-linux-gnu}mkdir: created directory ‘bin’mkdir: created directory ‘lib’mkdir: created directory ‘lib/i386-linux-gnu’
把 /bin/bash 和 /bin/ls 拷贝到测试目录:
~/tmp/jail$ cp -v /bin/{bash,ls} ~/tmp/jail/bin/‘/bin/bash’ -> ‘/home/charles/tmp/jail/bin/bash’‘/bin/ls’ -> ‘/home/charles/tmp/jail/bin/ls’3. 查看 ls 用到的共享库:
ldd /bin/bashlinux-gate.so.1 => (0xb771c000)libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb76d8000)libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb76d3000)libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7522000)/lib/ld-linux.so.2 (0xb771d000)
ldd /bin/bashlinux-gate.so.1 => (0xb7772000)libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb772e000)libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7729000)libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7578000)/lib/ld-linux.so.2 (0xb7773000)
把用到的共享库拷贝到对应的测试目录:
$ cp -v /lib/i386-linux-gnu/libtinfo.so.5 /lib/i386-linux-gnu/libdl.so.2 /lib/i386-linux-gnu/libc.so.6 ~/tmp/jail/lib/i386-linux-gnu/‘/lib/i386-linux-gnu/libtinfo.so.5’ -> ‘/home/charles/tmp/jail/lib/i386-linux-gnu/libtinfo.so.5’‘/lib/i386-linux-gnu/libdl.so.2’ -> ‘/home/charles/tmp/jail/lib/i386-linux-gnu/libdl.so.2’‘/lib/i386-linux-gnu/libc.so.6’ -> ‘/home/charles/tmp/jail/lib/i386-linux-gnu/libc.so.6’
$ cp -v /lib/ld-linux.so.2 ~/tmp/jail/lib/‘/lib/ld-linux.so.2’ -> ‘/home/charles/tmp/jail/lib/ld-linux.so.2’
然后再用 ldd对测试目录下的 ls 和 bash确认一下:
~/tmp/jail/bin$ ldd ./lslinux-gate.so.1 => (0xb7791000)libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb774b000)libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0xb7742000)libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7591000)libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb7553000)libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb754e000)/lib/ld-linux.so.2 (0xb7792000)libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb7548000)把落下的几个库文件拷过去:
~$ cp -v -f /lib/i386-linux-gnu/libselinux.so.1 /lib/i386-linux-gnu/libpcre.so.3 /lib/i386-linux-gnu/libacl.so.1 /lib/i386-linux-gnu/libattr.so.1 ~/tmp/jail/lib/i386-linux-gnu/‘/lib/i386-linux-gnu/libselinux.so.1’ -> ‘/home/charles/tmp/jail/lib/i386-linux-gnu/libselinux.so.1’‘/lib/i386-linux-gnu/libpcre.so.3’ -> ‘/home/charles/tmp/jail/lib/i386-linux-gnu/libpcre.so.3’‘/lib/i386-linux-gnu/libacl.so.1’ -> ‘/home/charles/tmp/jail/lib/i386-linux-gnu/libacl.so.1’‘/lib/i386-linux-gnu/libattr.so.1’ -> ‘/home/charles/tmp/jail/lib/i386-linux-gnu/libattr.so.1’
4. 使用 chroot进入测试目录:
~$ sudo chroot /home/charles/tmp/jail/ /bin/bashbash-4.3#
:~$ sudo chroot /home/charles/tmp/jail/ /bin/bashbash-4.3# lsbin libbash-4.3# pwd/
参考:
http://www.cyberciti.biz/faq/unix-linux-chroot-command-examples-usage-syntax/
0 0
- 使用chroot
- chroot()使用
- bind的chroot使用
- chroot
- chroot
- chroot
- chroot
- chroot
- chroot
- chroot
- 使用chroot构建linux沙盒
- 使用chroot,做最后的编译
- [转]chroot的使用
- 使用Chroot解决PHP的运行安全问题
- 使用Chroot解决PHP的运行安全问题
- 使用Chroot解决PHP的运行安全问题
- 使用Chroot解决PHP的运行安全问题
- 使用Chroot解决PHP的运行安全问题
- Qt5的插件机制(7)--插件开发示例代码(Lower-level API)
- virtulabox install 1
- QwtPainter解读---from Qwt6.1.1
- Restore a deleted file in a Git repo
- # Not currently on any branch. nothing to commit (working directory clean)
- 使用chroot
- Fix git “not currently on any branch” after merge conflicts
- How to create an RMI system
- Thinking of Search in Rotated Sorted Array
- 我发文看好A股再涨千点 因为管理层仍有王牌
- Set row and column to 1's
- windowsphone开发日记(二)--应用资源配置与使用
- AngularJs 用 $location 设置和判断在哪个页面
- 求数组元素最大差值