Chroot
chroot是起源于Unix系统的一个操作,作用于正在运行的进程和它的子进程,改变它外显的根目录。一个运行在这个环境下,经由chroot设定根目录的程序,它不能够对这个指定根目录之外的文件进行存取动作,不能读取,也不能更改它的内容。chroot这一特殊表达可以指chroot(2)系统调用或chroot(8)应用程序。 由chroot创造出的那个根目录,叫做“chroot监牢”(chroot jail,或chroot prison)。 历史1979年,在开发Version 7 Unix时,chroot系统调用首次问世。1982年3月18日,在4.2BSD发布前17个月,比尔·乔伊(Bill Joy)将chroot机制移植到BSD系统上,主要用于测试安装和构建系统。 1991年,威廉·齊斯韋克(William Cheswick)开发出第一个蜜罐程序,来监视入侵骇客的行动。他使用了chroot来进行实作,这是chroot最早被用于开发程序的先例,也因此,chroot创造出的根目录空间,之后被人称为软件监牢(chroot jail)。 2000年,FreeBSD团队,将原本chroot机制,导入虚拟化技术的概念,开发了新的jail系统命令,伴随着FreeBSD 4.0版一同发布。 2004年,因为骇客开发出许多可以破解chroot机制的方法,出现了jailbreak这个术语。 2005年,昇陽電腦在Solaris系统上开发出Solaris Containers,称它是吃了类固醇的chroot(chroot on steroids)。 2006年,Linux內核中开发出cgroups。2007年,被加到Linux 2.6.24版內核中。2008年,基于cgroups,开发出LXC,以及Docker。2013年被加入Linux 3.8版中。 应用应用chroot,可以创建并运行一个隔离的虚拟软件系统拷贝。这对于以下应用是十分有用的:
限制chroot机制的设计中,并不包括抵抗特权用戶(root)的蓄意篡改。在大多数的系统中,chroot环境沒有设计出适当的堆叠,所以一个在chroot下执行的程序,可能会通过第二次chroot来获得足够权限,逃出chroot的限制。为了减轻这种安全漏洞所带来的风险,在使用chroot后,在chroot下执行的程序,应该尽快放弃root权限,或是改用其他机制來替代,例如FreeBSD jail。在某些操作系统中,例如FreeBSD,已经采取预防措施,来防止第二次chroot的攻击[1]。
一些Unix系统提供扩展的chroot机制(一般称为操作系统层虚拟化)用于解决上述部分限制。包括:
在chroot中使用图形界面在chroot环境中使用图形界面是可能的,参见以下几个方案:
参见参考外部链接 |