<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Chroot</id>
	<title>Chroot - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Chroot"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Chroot&amp;action=history"/>
	<updated>2026-07-02T05:02:21Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Chroot&amp;diff=742088&amp;oldid=prev</id>
		<title>63.222.112.101：​translate traditional Chinese to simplified Chinese，use simplified Chinese terms.</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Chroot&amp;diff=742088&amp;oldid=prev"/>
		<updated>2024-03-14T03:07:41Z</updated>

		<summary type="html">&lt;p&gt;translate traditional Chinese to simplified Chinese，use simplified Chinese terms.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Rough translation|time=2021-01-22T04:36:22+00:00}}&lt;br /&gt;
{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
}}&lt;br /&gt;
{{lowercase}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;chroot&amp;#039;&amp;#039;&amp;#039;是起源于Unix系统的一个操作，作用于正在运行的进程和它的[[子进程]]，改变它外显的[[根目录]]。一个运行在这个环境下，经由chroot设定根目录的程序，它不能够对这个指定根目录之外的文件进行存取动作，不能读取，也不能更改它的内容。chroot这一特殊表达可以指&amp;lt;tt&amp;gt;chroot(2)&amp;lt;/tt&amp;gt;系统调用或&amp;lt;tt&amp;gt;chroot(8)&amp;lt;/tt&amp;gt;应用程序。&lt;br /&gt;
&lt;br /&gt;
由chroot创造出的那个根目录，叫做“chroot监牢”（chroot jail，或chroot prison）。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
1979年，在开发[[Unix|Version 7 Unix]]时，chroot系统调用首次问世。1982年3月18日，在[[BSD|4.2BSD]]发布前17个月，[[比尔·乔伊]]（Bill Joy）将chroot机制移植到[[BSD]]系统上，主要用于测试安装和构建系统。&lt;br /&gt;
&lt;br /&gt;
1991年，[[威廉·齊斯韋克]]（William Cheswick）开发出第一个[[蜜罐 (电脑科学)|蜜罐]]程序，来监视入侵[[骇客]]的行动。他使用了chroot来进行实作，这是chroot最早被用于开发程序的先例，也因此，chroot创造出的根目录空间，之后被人称为软件监牢（chroot jail）。&lt;br /&gt;
&lt;br /&gt;
2000年，FreeBSD团队，将原本chroot机制，导入[[虚拟化]]技术的概念，开发了新的[[FreeBSD jail|jail]]系统命令，伴随着FreeBSD 4.0版一同发布。&lt;br /&gt;
&lt;br /&gt;
2004年，因为骇客开发出许多可以破解chroot机制的方法，出现了[[jailbreak]]这个术语。&lt;br /&gt;
&lt;br /&gt;
2005年，[[昇陽電腦]]在[[Solaris]]系统上开发出[[Solaris Containers]]，称它是吃了类固醇的chroot（chroot on steroids）。&lt;br /&gt;
&lt;br /&gt;
2006年，Linux內核中开发出[[cgroups]]。2007年，被加到Linux 2.6.24版內核中。2008年，基于cgroups，开发出[[LXC]]，以及Docker。2013年被加入Linux 3.8版中。&lt;br /&gt;
&lt;br /&gt;
== 应用 ==&lt;br /&gt;
应用chroot，可以创建并运行一个隔离的虚拟软件系统拷贝。这对于以下应用是十分有用的:&lt;br /&gt;
;测试和开发 : 可以经由chroot建立一个测试环境，用来测试软件。这可以減少将软件直接布署到整个生产系统中可能造成的风险。&lt;br /&gt;
;依赖控制 : 可以在chroot建立的环境下，进行软件开发，组建以及测试，只保留这个程序需要的软件依赖。这可以避免在系统中预先安裝的各种[[软件库]]，影响到开发，造成软件开发者在构建软件时，可能遇到一些链接冲突。&lt;br /&gt;
;兼容性 : 早期遗留软件或使用不同[[应用二进制接口]]（ABI）的软件，因为它们提供的[[软件库]]和宿主机的库之间，可能发生名称或链接冲突，可以在chroot环境下运行，以保持系统安全。&lt;br /&gt;
;修复 : 当一个系统不能启动时，可以使用chroot，先从另一个根文件系统（比如从安裝媒体，或是[[Live CD]]）下开机，之后再回到受损的环境中，重新修正系统。&lt;br /&gt;
;特权分离 : 将允许开启文件描述符（例如文件，[[管道 (Unix)|管線]]或是网络连接）的程序放到chroot下执行，不用特地将工作所需的文件，放到chroot路径底下，这可以简化软件监牢的设计。chroot简化了安全设计，可以创造出一个沙盒环境，来执行一个有潜在危险的特权程序，以预先防御可能的安全漏洞。但值得注意的是，chroot没有足够能力去防御一个拥有特权的路径造成危害。&lt;br /&gt;
&lt;br /&gt;
== 限制 ==&lt;br /&gt;
chroot机制的设计中，并不包括抵抗特权用戶（root）的蓄意篡改。在大多数的系统中，chroot环境沒有设计出适当的堆叠，所以一个在chroot下执行的程序，可能会通过[https://web.archive.org/web/20160127150916/http://www.bpfh.net/simes/computing/chroot-break.html 第二次chroot]来获得足够权限，逃出chroot的限制。为了减轻这种安全漏洞所带来的风险，在使用chroot后，在chroot下执行的程序，应该尽快放弃root权限，或是改用其他机制來替代，例如[[FreeBSD jail]]。在某些操作系统中，例如FreeBSD，已经采取预防措施，来防止第二次chroot的攻击&amp;lt;ref&amp;gt;{{Cite web |url=http://man.freebsd.org/chroot/2 |title=存档副本 |accessdate=2011-01-25 |archive-date=2019-09-24 |archive-url=https://web.archive.org/web/20190924203352/https://www.freebsd.org/cgi/man.cgi?query=chroot&amp;amp;sektion=2&amp;amp;n=1 |dead-url=no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
* 在支持设备节点的文件系统中，一个在chroot中的root用户仍然可以创建设备节点和挂载在chroot根目录的文件系统；尽管，chroot机制不是被打算用来阻止低特权用户级访问系统设备。&lt;br /&gt;
* 在启动时，程序都期望能在某些预设位置找到[[交换空间|scratch space]]，配置文件，[[设备文件系统|设备节点]]和[[共享库]]。为了使chroot能够正常启动，在运行chroot的目录必须包含这些最基本的文件，这使得chroot难以作为一般的沙箱来使用。&lt;br /&gt;
* 只有root用户可以执行chroot。这是为了防止用户把一个[[setuid]]的程序放入一个特制的chroot监牢（例如一个有着假的&amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt;和&amp;lt;tt&amp;gt;/etc/shadow&amp;lt;/tt&amp;gt;文件的chroot监牢）由于引起提权攻击。&lt;br /&gt;
&lt;br /&gt;
* chroot不是为限制资源的使用而设计，如[[I/O]]，带宽，磁盘空间或CPU时间。大多数Unix系统都没有以完全文件系统为导向，以即给可能通过网络和过程控制，通过系统调用接口来提供一个破坏chroot的程序。&lt;br /&gt;
&lt;br /&gt;
一些Unix系统提供扩展的chroot机制（一般称为[[操作系统层虚拟化]]）用于解决上述部分限制。包括:&lt;br /&gt;
* [[IBM AIX|AIX]]中的[[Workload Partitions]]&lt;br /&gt;
* [[Solaris]]中的[[Solaris Containers|Containers]]&lt;br /&gt;
* [[Linux]]下的[[Linux-VServer]], [[FreeVPS]]和[[OpenVZ]]&lt;br /&gt;
* [[FreeBSD]]  中的[[FreeBSD jail|Jails]]&lt;br /&gt;
* [[NetBSD]]和[[OpenBSD]]中的[[sysjail|Sysjails]]&lt;br /&gt;
* [[DragonFly BSD]]中的[[DragonFly BSD jails]]&lt;br /&gt;
&lt;br /&gt;
== 在chroot中使用图形界面 ==&lt;br /&gt;
在chroot环境中使用图形界面是可能的，参见以下几个方案：&lt;br /&gt;
&lt;br /&gt;
*[[xhost]]&lt;br /&gt;
*使用内置像[[Xnest]]这样的X服务，或现代一点的[[Xephyr]]（或者在监牢中启动真正的X服务）&lt;br /&gt;
*通过开启X11转发（X11 forwarding）的 [[SSH]]连接到chroot中（ssh -X）&lt;br /&gt;
*当一个X服务启动是设置为不监听tcp端口或没有可用的SSH服务器时，使用[[openroot]]&lt;br /&gt;
*通过一个X11 VNC服务，链接到在外环境的VNC客户端&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
* [[Unix实用程序列表]]&lt;br /&gt;
* [[操作系统级虚拟化]]&lt;br /&gt;
* [[沙盒 (计算机安全)]]&lt;br /&gt;
* [[sudo]]&lt;br /&gt;
&lt;br /&gt;
== 参考 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* {{man|2|chroot|FreeBSD|change root directory}}&lt;br /&gt;
* {{man|8|chroot|FreeBSD|change root directory}}&lt;br /&gt;
* {{man|2|chroot|Linux|change root directory}}&lt;br /&gt;
* [http://www.elstel.com/openroot/ openroot - an extended chroot with X11 access, /dev &amp;amp; /media automounting &amp;amp; more.]{{Wayback|url=http://www.elstel.com/openroot/ |date=20100813232148 }}&lt;br /&gt;
&lt;br /&gt;
{{Unix命令}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Unix进程和任务管理相关软件]]&lt;br /&gt;
[[Category:虛擬化軟體]]&lt;br /&gt;
[[Category:Linux内核功能]]&lt;/div&gt;</summary>
		<author><name>63.222.112.101</name></author>
	</entry>
</feed>