PHP动态添加虚拟主机

Chr*_*ris 1 php php5 virtualhost apache-2.2

我正在开发一个 PHP Web 应用程序,除其他外,它需要允许用户添加、编辑和删除 Apache 虚拟主机条目。(我在我的 Apache2.conf 中包含了一个 web 可写的配置文件)。让 Apache 重新启动或识别 vhost 文件中的这些更改的最佳方法是什么?我看到的唯一方法是以某种方式将 PHP 升级到 root 权限并在文件更新时调用“apachectl graceful”,有没有更好的方法?我希望更改立即生效,而不是等待 crontab 执行....

Dev*_*tas 7

从安全的角度来看,人们无法想象有多少更糟糕的想法。人们不遗余力地使用 chroot 和其他机制来尝试从 Web 服务器进程/有效用户中删除特权。无论您是否授予 Web 用户升级权限,您都在授予 Web 进程通过允许它重写配置文件来定义什么类型的脚本在什么目录中可执行的能力。可怕的,可怕的想法。

我建议创建一组非常有限的 Web 服务器可以执行的操作,也许将所需虚拟主机的名称和主目录写入 Web 根目录中的文本文件。然后,具有所需权限的其他一些进程可以检查语法并将其转换为所需的更改。或者直接通过 TCP 连接将命令发送到同一台机器上的端口,如下所述。

要将权限提升限制为仅执行此操作,您可以编写一个 TCP 服务器来侦听 Web 服务可以向其发送重启消息的特殊端口;我已经编写了这样的特殊用途的 TCP 服务器(只有几百行 C,其中大部分可用作模板)以允许 chroot 隔离的 Web 服务器进程访问其他一些服务,这些服务通常在没有授权的情况下不可用对文件系统和二进制文件的访问权限。

  • “可怕的想法”对于即将发生的事情来说是轻量级的,特别是如果他使用 php 来完成这项工作! (3认同)
  • +1 我认为这仅比在网页上显示 root 密码更安全。 (2认同)