![Apache 以用户“apache”身份运行,但其创建的文件归“nobody”所有](https://linux22.com/image/585088/Apache%20%E4%BB%A5%E7%94%A8%E6%88%B7%E2%80%9Capache%E2%80%9D%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E5%85%B6%E5%88%9B%E5%BB%BA%E7%9A%84%E6%96%87%E4%BB%B6%E5%BD%92%E2%80%9Cnobody%E2%80%9D%E6%89%80%E6%9C%89.png)
我以用户“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
。