Apache-2.2
PHP動態添加虛擬主機
我正在開發一個 PHP Web 應用程序,除其他外,它需要允許使用者添加、編輯和刪除 Apache 虛擬主機條目。(我在我的 Apache2.conf 中包含了一個 Web 可寫配置文件)。讓 Apache 重新啟動或辨識 vhost 文件中的這些更改的最佳方法是什麼?我看到的唯一方法是以某種方式將 PHP 升級到 root 權限並在文件更新時呼叫“apachectl graceful”,有沒有更好的方法?我希望更改立即生效,而不是等待 crontab 執行….
從安全的角度來看,人們無法想像有很多更糟糕的想法。人們不遺餘力地使用 chroot 和其他機制來嘗試從 Web 伺服器程序/有效使用者中刪除權限。無論您是否授予 Web 使用者升級的權限,您都授予 Web 程序通過允許它重寫配置文件來定義哪些目錄中的什麼類型的腳本可以執行什麼的能力。可怕的,可怕的想法。
我建議創建一組 Web 伺服器可以採取的非常有限的操作,也許將所需虛擬主機的名稱和主目錄寫入 Web 根目錄中的文本文件。然後,具有所需權限的其他一些程序可以檢查語法並將其轉換為所需的更改。或者直接通過 TCP 連接將命令發送到同一台機器上的埠,如下所述。
要將權限提升限制為僅採取這一操作,您可以編寫一個 TCP 伺服器,監聽一個特殊埠,Web 服務可以向該埠發送重啟消息;我已經編寫了這種特殊用途的 TCP 伺服器(只有幾百行 C 程式碼,其中大部分可用作模板),以允許 chroot 隔離的 Web 伺服器程序訪問其他一些服務,這些服務通常在沒有授予它的情況下不可用blanch 訪問文件系統和二進製文件。