为什么“chroot”从未在Mac OS X上使用?

我已经使用Mac 25年了,自从OS X 10.0开始使用“UNIX”,但是我从来没有真正地想过chroot,也没有真正需要或想要…

这是一个简单的问题,但是…在什么情况下会select在Mac上使用“chroot”? 它确实是BSD时代的一个内置函数,但是我从来没有听说过它正在被使用……是另一个命令行或系统级工具的function性部分,是否可以避免需要chroot? 如果是这样,什么是等效function? 如果没有,为什么它似乎永远不会被使用,引用或需要?

chroot有两个主要的用途类别( 维基百科的文章更详细):

  • 隔离一个应用程序,为它提供一个受限制的文件系统视图。 这通常用于公共FTP服务器,例如,确保即使在服务器软件中存在错误,也不能在公共区域之外提供文件。 由于两个原因,这个用例越来越不常见了。 首先,chroot并没有提供太多的隔离,服务器上的一个漏洞可能会让攻击者在访问文件的许多其他方面造成破坏。 其次,提供更强的隔离的虚拟机变得便宜很多,并且通常更容易设置,所以它们是自然的select。
  • 在具有相同内核但不同库的不同操作系统中运行软件。 例如, David Cournapeaubuild议 ,如果你正在开发软件,安装了很多额外的东西,并且要确保你的软件不依赖于额外的东西,那么你可以用chroot最小的安装。 或者(但是我不认为这对于OSX系统来说很常见),你可能会运行一个不同的操作系统版本 – 例如我有一个64位的Linux系统,这个系统有一个可以用chroot访问的32位版本。需要运行一个不能直接在主系统上运行的32位应用程序。

这两种用例都比较专业。 对大多数人来说,Chroot是无用的; 它在那里,因为它对一些人有用,而且实施起来非常便宜。

我在mac os x上使用chroot来testing一些软件,或者testing我所涉及的项目的包装(例如,在我使用10.6时testing安装在10.4上)。

人们希望打开他们的个人系统以供他人访问的频率如何? 大多数情况下,chroot是面向服务器的,有很多不同的用户。 但是,如果你确实需要为用户设置一个本地的SFTP服务器来访问你的个人系统,那么你应该明确地做到这一点。

也许这个post会让你走向正确的方向:

http://hints.macworld.com/article.php?story=2004110314282345