chroot监狱
仔细观察会发现,usermod/groupmod
,passwd/gpasswd
命令都会有一个chroot
参数。
chroot
在Linux中是一种特殊的用法,行为是修改新的运行环境的根目录(/
,注意不是工作目录)。
类似于ftp服务器的顶级目录(ftp登录用户最高只能到达ftp的/目录,无法再向上进入系统目录)。
在此目录下工作的程序会以新的/为运行环境,好像开辟了一块隔离空间一样,几乎不会对系统环境造成影响。
所以chroot
通常被称为“监狱”(jail)。
容器级虚拟化技术就借鉴了类似于chroot的技术,当然要更高级一些,比如docker
就基于LXC
技术。
chroot简单演示:
比如我要将/mnt/目录作为一个新程序的隔离运行环境(沙箱):
cp -a --parents /etc/ /bin/ /sbin/ /lib* /mnt/ # 将一些系统运行必备的程序和依赖运行库拷贝至/mnt/
chroot /mnt/
此时尽管实际在/mnt/下运行各种命令,但是pwd等程序显示的将会是/
,
在程序看来它就好像真的在/
目录下运行一样,并且觉察不到真实/
的存在,不会破坏真正的系统环境。
某些服务(比如DNS的bind9服务)甚至推荐在chroot环境下运行以获得更高的安全性和隔离性。
chroot在LiveCD中维护原硬盘上已有的系统很有用。比如原硬盘上的系统已经损坏无法启动,
可以通过LiveCD进入一个可用的系统,直接chroot到原来系统的/目录下就可以对原系统进行维护了。
类似于WinPE
这样的工具对系统的维护过程。
有关
chroot
更多介绍与用法参考IBM的文章: 理解chroot