Linux

阿帕奇,suexec,PHP,suPHP

  • April 2, 2010

雖然我作為 Linux使用者很舒服,但我的 Linux Admin-fu 有點弱。因此,我在這裡尋找有關我將要建構的 CentOS 伺服器的指導。

我需要為我們的一些客戶設置一個 Apache2 Web 伺服器。我希望每個客戶端的 Web 內容都USERDIR位於靜態 HTML 站點的主目錄下(在 apache.conf 中,對嗎?)。我希望 Apache 作為客戶端執行(suexec?)。他們的一些東西將是 PHP 應用程序,我的印suphp像是我也想看看。

所以基本上我想看起來像一個共享網路託管公司的小版本。考慮到這些是多麼普遍,我想我很容易找到一個很好的目前如何設置這一切的指南,但到目前為止,我運氣不佳。我懷疑我的搜尋詞已關閉。

所以問題(隨意回答任何或全部):

  1. 任何人都有一些目前/現代指南的可靠連結可以幫助我完成這一切?不,apache 文件站點不是指南;-)
  2. 由於我混合了靜態站點和 PHP 應用程序,我是否想要/需要安裝 suexec 和 suphp?如果是這樣,這是否會帶來我應該注意的任何挑戰?
  3. 我應該尋找其他選項而不是 suexec 和 suphp 嗎?

我計劃讓最終使用者通過 SSH、SFTP 或 SCP 訪問他們的東西(如果這會影響任何東西)。

在此先感謝您的幫助。

$$ Edit $$ 我應該在前面提到這一點:我尋求模擬與文件權限和所有權相關的共享託管服務提供商的一個關鍵目標。我真的很想避免教使用者需要更改這些東西只是為了查看他們的添加/更改。

使用 suexec 和 suphp 強制執行不同於預設類型的權限分離。

預設是將使用者的權限與 Web 伺服器分開。也就是說,使用者擁有這些文件,他必須授予 Web 伺服器查看和更改它們的權限。

suexec/suphp 模型是網路伺服器(執行腳本時)執行在使用者帳戶下,因此網站有權執行使用者有權執行的任何操作。在某種程度上,這消除了使用者和網路伺服器之間的分離,但作為交換,它強制執行不同的分離:即在同一個盒子上一個使用者的網站和不同使用者的網站之間。

預設情況下,PHP 始終在 Apache 的使用者帳戶下執行,因此一個網站的 PHP 腳本可以訪問另一個網站的 PHP 腳本可以訪問的任何文件。因此,如果伺服器上的一個帳戶被黑客入侵,感染可能會傳播到其他帳戶。SuPHP 可以防止這種情況。

suexec 和 suphp 都不會影響 apache 提供靜態內容的方式。所有舊規則仍然適用。相反,suexec 和 suphp 會更改 CGI 和 PHP(分別)執行的帳戶。Suexec 使 CGI 執行檔在所有者帳戶下執行,而 SuPHP 使 PHP 腳本在所有者帳戶下執行。

Suexec 和 SuPHP 不一定更好。他們只是不同。他們不會阻止網站被黑客入侵(並且可以說可能會使網站更容易被黑客入侵),但他們會阻止一個網站上的妥協傳播到所有其他網站。對於站點管理員來說,這種隔離可以說更為重要,這就是為什麼一些共享主機系統將 suexec 和 suphp 設為預設值的原因。

一個非常常見的“陷阱”是 SuPHP 在執行之前檢查腳本的所有權和權限,如果權限不合適,將返回 500 錯誤。

特別是:

  • 文件的所有者和組必須與網站所有者匹配(如 apache 配置中的設置)
  • 該文件不能是全域可寫的
  • 父目錄不能是全域可寫的

引用自:https://serverfault.com/questions/128886