chroot的用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
chroot的⽤法
chroot命令⽤来在指定的根⽬录下运⾏指令。
chroot,即 change root directory (更改 root ⽬录)。
在 linux 系统中,系统默认的⽬录结构都是以/,即是以根 (root) 开始的。
⽽在使⽤ chroot 之后,系统的⽬录结构将以指定的位置作为/位置。
在经过 chroot 之后,系统读取到的⽬录和⽂件将不在是旧系统根下的⽽是新根下(即被指定的新的位置)的⽬录结构和⽂件,因此它带来的好处⼤致有以下3个:
1. 增加了系统的安全性,限制了⽤户的权⼒;
在经过 chroot 之后,在新根下将访问不到旧系统的根⽬录结构和⽂件,这样就增强了系统的安全性。
这个⼀般是在登录 (login) 前使⽤chroot,以此达到⽤户不能访问⼀些特定的⽂件。
2. 建⽴⼀个与原系统隔离的系统⽬录结构,⽅便⽤户的开发;
使⽤ chroot 后,系统读取的是新根下的⽬录和⽂件,这是⼀个与原系统根下⽂件不相关的⽬录结构。
在这个新的环境中,可以⽤来测试软件的静态编译以及⼀些与系统不相关的独⽴开发。
3. 切换系统的根⽬录位置,引导 Linux 系统启动以及急救系统等。
chroot 的作⽤就是切换系统的根位置,⽽这个作⽤最为明显的是在系统初始引导磁盘的处理过程中使⽤,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执⾏真正的 init。
另外,当系统出现⼀些问题时,我们也可以使⽤ chroot 来切换到⼀个临时的系统。
做个演⽰:
创建⼀个⽬录作为根⽬录,chroot MyRootDir默认会执⾏${SHELL} -i,即MyRootDir/bin/bash,所以需要拷贝bash到指定⽬录
直接执⾏chroot MyRootDir出现错误:chroot: failed to run command ‘/bin/bash’: No such file or directory,原因是缺少bash相关的库,使⽤ldd查看库并拷贝(此例⼦中为简化演⽰,直接拷贝/lib⽬录)
这样就执⾏新根⽬录内的命令
也可以⼿动指定bash路径切换,这样就不需要将bash放⼊新根路径的/bin⽬录下
chroot的第三个参数为运⾏的指令,该指令位于新的root路径,从下⾯可以验证改命令执⾏的不是系统路径的命令
下⾯是chroot的命令说明:
从chroot的⽤法可以看出它的使⽤场景有⼀定的局限性,⾸先它依赖于⼀台现成的unix系统(根⽬录必须存在于某台现有系统上),其次chroot仅仅是在系统⽬录上进⾏了隔离,并没有对进程、⽹络等层⾯进⾏隔离。
⾸先检验⼀下进程空间:
在pts/0端切换到新的根⽬录,执⾏ping 127.0.0.1操作,该操作属于新根⽬录下进⾏的
新开⼀个终端界⾯,查看ping进程可以看到在原系统下⾯是可以看到新根⽬录下执⾏的进程。
chroot并没有在进程层⾯上进⾏隔离
同样地在新根⽬录下执⾏ifconfig等⽹络操作可以看到⽹络信息跟原系统是完全⼀样的。
chroot并没有在⽹络层⾯上进⾏隔离
chroot并不能完全保证系统安全,在很多层⾯上chroot并没有进⾏完全隔离。