Linux

NGinx 和 PHP 應該以什麼使用者身份執行?

  • January 17, 2016

權限讓我對 Linux 感到困惑一段時間。因此,此刻我的 NGinx 和 PHP-FPM 實例都與使用者和組一起執行:

www-數據

這是標準嗎?當我遇到文件上傳時遇到了麻煩。

例如,一個文件將與使用者和組 www-data 一起上傳。現在,由於我在 Web 應用程序中設置權限 (0440) 的方式,我無法使用我的普通帳戶通過 ssh 登錄來下載這些文件。這是無法改變的。

我正在考慮更改我的 nginx 和 php 實例以保留該組,但將它們更改為以我的使用者名執行。

在這里處理權限的正確方法是什麼?謝謝。

這就是它的工作原理:當您通過 FTP/SSH 登錄並上傳文件時,它們是使用您的權限創建的。可能您的 webroot 是世界可寫的(0777),這是不安全的 - 系統中的每個使用者都可以在那裡寫一些東西。PHP 以不同的使用者權限執行(它們在 PHP-FPM 配置中指定,而不是 nginx 配置),並且由於目錄是全域可寫的,PHP 使用者(www-data)也可以在那裡寫入。但此文件的所有者是 www-data,而不是您的帳戶。它們是文件系統權限級別的 2 個不同帳戶。

我建議您創建具有最低權限的專用使用者,該使用者將擁有 webroot 目錄並用於 FTP/SSH 上傳並執行 php。您應該更改 PHP-FPM 配置,在 worker 部分有使用者條目和 NGINX 配置,這樣您就可以使您的網站文件不可讀且更安全。

不要使用特權(sudo 功能,寫權限外部 docroot)使用者執行 PHP,這可能會導致伺服器安全受損。

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