chroot的用法

chroot的用法,第1张

概述chroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (r

chroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置。

在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

增加了系统的安全性,限制了用户的权力;

在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。

建立一个与原系统隔离的系统目录结构,方便用户的开发;

使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。

切换系统的根目录位置,引导 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并没有进行完全隔离

详细技术讲解参见:https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

总结

以上是内存溢出为你收集整理的chroot的用法全部内容,希望文章能够帮你解决chroot的用法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1015405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存