Apache-2.2
nginx 設置為一個使用者,但 whoami 報告另一個使用者
我在託管 Wordpress 的測試機器上設置了 nginx。我試圖找出一些權限問題,但遇到了一些我無法弄清楚的事情。
儘管我所知道的所有地方我都在告訴它以使用者“nginx”執行,但
whoami
報告回“apache”。
- 在 nginx.conf 文件中,我有使用者 nginx 設置。
- 如果我執行
ps aux | grep [n]ginx
,主程序以 root 身份執行,worker 以 nginx 身份執行。- 我的站點配置文件中沒有提到 apache
- 我
<?php echo(exec("whoami")); ?>
在一個 php 頁面上,它響應為“apache”- 權限與此 apache 帳戶相關聯。如,如果 public_html 文件夾設置為 nginx,我會遇到權限問題,但如果是 apache,則可以正常工作。
我似乎在其他任何地方都找不到看到這個 apache 帳戶的地方。我什至想刪除它,但 userdel 說當我嘗試這個時使用者已登錄。
在 Nginx 設置中,您可能使用 PHP-FPM 來解釋 PHP 腳本。PHP-FPM 有自己的配置,它定義了池。每個池都可以作為自己的使用者執行。本質上:Nginx 需要能夠讀取您直接從它提供的(靜態)文件(並遍歷(即 x)目錄權限) PHP-FPM(相關池)需要對文件具有讀取權限,並且對文件夾(或您要修改的任何文件)的寫訪問權(和遍歷權限)。
PHP-FPM 配置通常位於 /etc/php-fpm.conf 和 /etc/php-fpm.d/*.conf
PHP-FPM 配置的相關部分可能如下所示:
[pool_name] listen = 127.0.0.1:9000 user = apache group = apache
檢查執行 PHP-FPM 的使用者:(
ps -ef | grep php-fpm
如果您有多個池,您可能有多個 php-fpm 實例,可能有多個使用者)。(順便說一句,如果您查看 Nginx 配置,您可能會發現對 FastCGI 處理程序的引用,例如:
fastcgi_pass 127.0.0.1:9000;
。此處指定的地址和埠需要與您正在修改其使用者/組的池的地址和埠匹配)。此外,僅出於診斷目的,您可能已經能夠搜尋以使用者 apache (ie
ps -ef | grep apache
) 身份執行的程序,而不是查看執行 nginx 的使用者。