chroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/
,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/
位置。
在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:
做个演示:
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/