Apache 以用户“apache”身份运行,但其创建的文件归“nobody”所有

Apache 以用户“apache”身份运行,但其创建的文件归“nobody”所有

我以用户“apache”的身份运行 apache httpd 2.2。但是,它创建的任何文件都归“nobody”所有。此外,它只能访问用户“nobody”可以访问的内容。看起来 apache 确实以“nobody”的身份运行,但下面的 config 和 ps 输出表明并非如此。发生了什么?

来自httpd.conf:

User apache
Group apache

Apache 进程:

# ps aux | grep http
root       380  0.0  0.0  61216   744 pts/0    S+   16:24   0:00 grep http
root     22077  0.0  0.2 266644  8292 ?        Ss   10:22   0:00 /usr/sbin/httpd -k start
apache   22099  0.0  0.1 266776  5980 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   22100  0.0  0.1 267048  6172 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   22101  0.0  0.1 266776  5972 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   22102  0.0  0.1 266912  6028 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   22103  0.0  0.1 266776  5964 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   22104  0.0  0.1 266776  5976 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   22105  0.0  0.1 266908  6040 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   22106  0.0  0.1 266776  5960 ?        S    10:22   0:00 /usr/sbin/httpd -k start
apache   23153  0.0  0.1 266776  5976 ?        S    11:01   0:00 /usr/sbin/httpd -k start
apache   23498  0.0  0.1 266912  6104 ?        S    11:13   0:00 /usr/sbin/httpd -k start
apache   25717  0.0  0.1 266776  5940 ?        S    12:40   0:00 /usr/sbin/httpd -k start

答案1

这是 Passenger 的预期行为。

这里

Rails 应用程序以文件 config/environment.rb 的所有者身份启动,而 Rack 应用程序则以文件 config.ru 的所有者身份启动。因此,如果 /home/webapps/foo/config/environment.rb 归 joe 所有,那么 Phusion Passenger 也会以 joe 的身份启动相应的 Rails 应用程序。

要停止此行为并坚持下去apache,请设置PassengerUserSwitching off

相关内容