在OpenBSD的Apache服务器上运行xinc

11

有人能够在OpenBSD的chrooted默认Apache下正确运行xinc吗? 我希望保持我们的开发服务器完全chrooted,就像我们的生产服务器一样,以确保我们的代码在chrooted环境下运行良好。

4个回答

4

你是否已经在Xinc的错误跟踪器上发布了这个问题?Xinc本身应该可以正常运行,因为它既可以作为守护进程运行,也可以作为Web应用程序运行。正如你所暗示的,问题可能是守护进程没有在chroot环境中运行,而Web界面是在其中运行,导致任一方都无法获取文件。


2

@dragonmantank

对于Xinc,我希望您使用PEAR进行安装。

pear list-files xinc/Xinc

这应该可以解决问题并向您展示Xinc安装程序放置其文件的位置。因此,尽管Xinc只是一个大的PHP脚本,但仍然分散到rc脚本和其他所有必要使应用程序运行的文件中。我确定您不需要添加列出的所有路径,但可能需要添加其中一些才能使其运行。
除了Xinc本身之外,我认为它还需要phpUnit和一堆其他PEAR库才能运行,因此我建议如下:
pear config-get php_dir

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


1

我自己从未使用过 xinc,因此我只能提一下通常如何将应用程序进入 chroot。

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

仔细查看输出结果:

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

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

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

this 链接也很有用(尽管稍微有点过时),其中概述了在 OpenBSD 上 chrooted PHP 的一些 gotchas。


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内工作的内容的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接