10

有没有人能够让 xinc 在 OpenBSD 的 chrooted 默认 Apache 下正确运行?我想让我们的开发服务器像我们的生产服务器一样完全运行 chroot,以便我们确保我们的代码运行良好 chroot。

4

4 回答 4

3

您是否在 Xinc错误跟踪器上发布了该问题?Xinc 本身应该可以正常运行,因为它既可以作为守护程序运行,也可以作为 Web 应用程序运行。正如您所提到的,问题可能是守护程序没有在 chroot 环境中运行,而 Web 界面是,导致任何一方都没有抓取文件。

于 2008-09-22T08:26:34.580 回答
2

@dragonmantank

在 Xinc 的例子中,我希望你使用 PEAR 来安装它。

pear list-files xinc/Xinc

这应该会这样做,并向您显示您的 Xinc 安装将其文件放在哪里。因此,即使 Xinc “只是”一个大的 PHP 脚本,它仍然分散到 rc 脚本和所有其他使应用程序运行所必需的东西中。我确定您不需要添加那里列出的所有路径,但可能需要添加一些以使其运行。

除了 Xinc 本身,我认为它还需要 phpUnit 和一堆其他 PEAR 库来运行,所以我建议是这样的:

pear config-get php_dir

然后您需要将该路径(如 Henrik 建议的那样)添加到 chroot 环境。

于 2008-08-31T17:04:16.047 回答
1

我自己从未使用过 xinc,我只能暗示我通常如何使用 chrooting 应用程序。

第一步是收集应用程序运行所需的所有信息;这我通常通过运行systrace(1)ldd(1)来找出运行软件所需的内容。

通过输出

systrace -A -d. <app>
ldd <app>

并确保应用程序接触和需要的一切(很多应用程序接触它实际上并不需要的东西)在 chroot 环境中可用。您可能需要稍微调整配置和环境变量。此外,如果可以选择让应用程序记录到 syslog,我通常会这样做并创建一个 syslog 套接字(请参阅syslogd(8)的 -a 选项),以减少应用程序需要写入访问权限的位置。

我刚刚描述的是一种使几乎任何程序在 chroot 环境中运行的通用方法(但是,如果您需要导入一半的用户空间和一些 suid 命令,您可能不想执行 chroot :)。对于在 Apache 下运行的应用程序(我相信您知道 OpenBSD httpd(8)略有不同),您可以选择(一旦程序启动;任何动态库仍然需要存在于监狱中)使用apache 来访问文件,允许使用httpd.conf在 chroot 环境中导入资源,而无需实际复制它们。

这个链接也很有用(如果有点过时),它概述了 OpenBSD 上 chrooted PHP 中的一些陷阱。

于 2008-08-24T11:57:21.160 回答
1

第一步是收集应用程序运行所需的所有信息;这我通常通过运行 systrace(1) 和 ldd(1) 来找出运行软件所需的内容。

我会试试这个。我发现 xinc 的一个大问题是,虽然它是一个 PHP 应用程序,但它想知道应用程序的安装路径(但它仍然会将内容传播到其他文件夹中)并以守护程序模式运行一些 PHP 脚本(这些脚本最难跑起来)。因此,例如,我告诉它安装到 /var/www/xinc 然后创建一个符号链接

/var/www/var/www/xinc -> /var/www/xinc

它部分工作。我让 GUI 出现了一点,它拒绝识别我设置的任何项目。我认为最大的问题是它的一部分在运行 chroot,而另一半在外面运行。

如果一切都失败了,我将不得不在我们在 chrooted 环境中编程时构建一些东西,因为我们的生产是 chrooted。我们遇到了问题,我们在 chroot 之外进行编码,然后必须回溯以找到我们需要使其在 chroot 内工作的内容。

于 2008-08-24T15:21:50.247 回答