Nginx

仍然對權限感到困惑 - linux、nginx、php-fpm

  • May 20, 2020

我已經閱讀了我的網站文件/文件夾在 Linux 網路伺服器上應具有哪些權限?

但是我仍然卡住了。我的設置是:

  • 擁有構成網站的目錄和文件的開發人員使用者“ade”
  • 伺服器是帶有 php-fpm 通過套接字的 nginx:fastcgi_pass unix:/tmp/php5-fpm.sock;
  • 網站包含一個上傳目錄,在此配置下執行時,該目錄必須可由 PHP 寫入
  • 我不想將權限設置為 777,顯然

我創建了一個webadmin組並向其中添加了“ade”和 nginx:

$ groups ade
ade : ade webadmin

$ groups nginx
nginx : nginx webadmin

我已將站點中所有內容的所有者設置為我和 webadmin 組:chown ade:webadmin *

…如你看到的:

drwxrwxr-x 2 ade webadmin 4096 Jul  3 13:58 logs
drwxrwxr-x 5 ade webadmin 4096 Jul  4 08:35 public
drwxrwxr-x 4 ade webadmin 4096 Jul  3 16:18 system
drwxrwsr-x 2 ade webadmin 4096 Jul  9 16:13 uploads

然而,儘管上傳的權限為 775(使用者和組的 rwx),nginx 和 php 無法寫入該文件夾。只有當我將它設置為 777 時,它才能將圖像上傳到它。

我在上述規範答案中看到了有關使用的建議,chmod u+w但不明白為什麼這是必要的。

我想出的最明智的方法是:

查看/etc/php-fpm.d/www.conf FPM 使用的使用者是什麼。就我而言,它是“阿帕奇”。然後我將此使用者添加到“nginx”組。

現在我可以以一致的方式控制權限 - 使用者是我,我擁有完全權限,組是“nginx”,它已讀取(和 r+x 用於 dirs),並且它是一致的,因此兩個 Web 內容(由 nginx 訪問) PHP(由 php-fpm 訪問)由組“nginx”設置。

另一個不在 php-fpm 配置中更改使用者或組的好理由是避免處理權限問題的後果 - php-fpm 使用其以前的使用者創建了各種文件夾/文件。現在它無法訪問它們,因為不再使用同一個使用者。例如 PHP 會話數據(參見 /var/lib/php/session)。

我希望這有幫助!

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