Permissions
如何處理日誌文件的 Nginx 和 PHP 所有權?
我目前在 Ubuntu 上的 Apache PHP 伺服器前執行 Nginx 反向代理。我
log.txt
在為我的網站提供 PHP 文件的同一目錄中有一個文件。PHP 通過 API 活動寫入此日誌文件。在網路瀏覽器中訪問時,我可以將 url 從更改為訪問日誌文件,這是完全不安全lookup.php
的。log.txt
我只想在通過 SSH 登錄時訪問日誌文件。我將日誌文件的所有權更改為
www-data
PHP 目前正在執行的組。我想要發生的是 PHP 文件能夠寫入此日誌文件,但使用者無法導航到 Web 瀏覽器中的日誌文件路徑並顯示它。我認為問題在於,由於 Nginx 也執行 aswww-data
,通過將日誌文件所有者更改為www-data
PHP 可以寫入它,Nginx 現在能夠讀取它。以下是我正在考慮的一些想法,但我不確定它們是否存在重大安全漏洞:
- 將日誌文件更改為文件所有者的只寫文件,
www-data
. 我正在做研究,這似乎是一種罕見的方法。- 使 PHP 和 Nginx 作為單獨的組執行,為 PHP 提供一個 rwx 訪問權限,而對 nginx 不提供任何訪問權限。
- 在 Web 根目錄之外創建一個新目錄,這樣就沒有與該文件關聯的 Web URL,但該目錄由
www-data
(因此 PHP 和 Nginx)擁有。我不確定這是否有漏洞。- 禁止通過 Nginx 訪問日誌文件。這對我來說有點“hacky”。
哪條路線合適?
我傾向於為我的 Web 伺服器和代理執行 nginx,所以請原諒 Apache 的無知,但我通常不會為此使用文件權限。相反,我更願意告訴我的網路伺服器不要提供某些文件。 這是一種從伺服器故障中執行此操作的方法。
為日誌創建一個單獨的目錄也很好,如果該目錄仍然位於 URL 可以訪問的位置,則 Apache 可以簡單地禁止該目錄。或者,
/var/log/
可以使用該位置,但這通常是為在作業系統上執行的服務保留的。使用 Web 伺服器拒絕訪問不應該讓人覺得很奇怪,因為此功能部分用於敏感文件。此外,Web 伺服器的根目錄假定下面的所有文件都是用於 Web 的,除非明確拒絕(如上所述)。這是我在必要時使用我的網路伺服器的路線。