Apache-2.2

nginx 設置為一個使用者,但 whoami 報告另一個使用者

  • September 10, 2012

我在託管 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 的使用者。

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