nginx 设置为一个用户,但 whoami 报告了不同的用户

nginx 设置为一个用户,但 whoami 报告了不同的用户

我在一台托管 Wordpress 的测试机器上安装了 nginx。我试图解决一些权限问题,但遇到了一些我无法解决的问题。

尽管我所知道的所有地方我都告诉它以用户“nginx”身份运行,但whoami报告结果却是“apache”。

  • 在 nginx.conf 文件中,我有用户 nginx 设置。
  • 如果我运行ps aux | grep [n]ginx,主进程将以 root 身份运行,工作进程将以 nginx 身份运行。
  • 我的网站配置文件中没有提到 apache
  • 我有<?php echo(exec("whoami")); ?>一个 php 页面,它响应为“apache”
  • 权限与此 apache 帐户绑定。例如,如果将 public_html 文件夹设置为 nginx,则会出现权限问题,但如果设置为 apache,则一切正常。

我似乎找不到其他地方可以看到这个 Apache 帐户。我甚至想删除它,但当我尝试这样做时,userdel 说用户已登录。

答案1

在 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;。此处指定的地址和端口需要与你要修改的用户/组的池的地址和端口相匹配)。

此外,仅出于诊断目的,您不必查看 nginx 以哪个用户身份运行,而是可以搜索以 apache 用户身份运行的程序(即ps -ef | grep apache)。

答案2

这取决于您的 php 脚本如何运行,它们要么在 apache 服务器上运行,然后 nginx 将 php 请求重定向到它,要么由以 apache 身份运行的 php-fpm/FastCGI 进程运行。您需要检查这一点,并让它们以 nginx 身份运行(如果需要)。
如果正在使用 php-fpm,您需要在 /etc/php-fpm.d/ 下找到相应的配置,例如 /etc/php-fpm.d/somesite.conf,并确保下一行如下所示:

user = nginx
group = nginx

然后通过以下命令重新启动 php-fpm 安装:

service php-fpm restart

或者

/etc/init.d/php-fpm restart

相关内容