我已经使用 Mac 25 年了,从 OS X 10.0 开始就使用“UNIX”...但我从未真正考虑过 chroot,也从未真正需要或想要...
这是一个简单的问题,但是...在什么情况下人们会选择在 Mac 上使用“chroot”?它确实是 BSD 时代的内置功能,但我从未听说过有人使用它...该功能是否是另一个命令行或系统级工具的一部分,从而消除了 chroot 的需要?如果是,那么等效功能是什么?如果不是,为什么它似乎从未被使用、引用或需要?
答案1
chroot 的用途主要有两类(维基百科文章更详细地讲解):
- 隔离应用程序,为其提供文件系统的受限视图。例如,这通常用于公共 FTP 服务器,以确保即使服务器软件中存在错误,它们也无法提供公共区域之外的文件。这种用例越来越少见,原因有二。首先,chroot 不能提供太多隔离,服务器中的漏洞可能允许攻击者通过访问文件以外的许多其他方式造成损害。其次,虚拟机确实提供了更强的隔离,而且价格便宜得多,而且通常更容易设置,因此它们是自然选择。
- 在具有相同内核但不同库的不同操作系统中运行软件。例如,David Cournapeau 建议如果您正在开发软件,安装了许多额外的东西,并且想确保您的软件不依赖于这些额外的东西,那么您可以在 chroot 中仅使用最小安装进行测试。或者(但我认为这在 OSX 系统中并不常见)您可以运行不同的操作系统版本 — 例如,我有一个 64 位 Linux 系统,它有一个可以通过 chroot 访问的 32 位发行版,用于在极少数情况下需要运行无法直接在主系统上运行的 32 位应用程序的情况。
这两种用例都相当特殊。Chroot 对大多数人来说毫无用处;它之所以存在,是因为它对某些人有用,而且实现起来非常便宜。
答案2
我在 mac os x 上使用 chroot 来测试一些软件,或者测试我所参与的项目的打包(例如,在我使用 10.6 时在 10.4 上测试安装)。
答案3
人们多久会想开放自己的个人系统供他人访问?大多数情况下,chroot 适用于拥有大量不同用户的服务器。但是,如果您确实想设置本地 SFTP 服务器供用户访问您的个人系统,那么您绝对应该将其 chroot。
也许这篇文章能给你指明正确的方向:
http://hints.macworld.com/article.php?story=2004110314282345
答案4
一个常见的用例是构建软件甚至完整的操作系统。出于同样的原因,你可能需要控制或限制可见的库、框架、应用和资源