为什么 apache 以 root 身份运行?

为什么 apache 以 root 身份运行?

Apache 不是应该只绑定到端口80root然后切换到www-data用户来处理请求吗?我目前有一个access.log文件的权限是-rw-r--r-- 1 root root 1312 Jan 9 08:23 access.log,如果我没记错的话,那么www-data用户不应该能够写入这个文件access.log

答案1

# ps 辅助
用户 PID 命令
根 542 /usr/bin/httpd -k 启动 -DFOREGROUND
http 592 \_ /usr/bin/httpd -k 启动 -DFOREGROUND
http 593 \_ /usr/bin/httpd -k 启动 -DFOREGROUND
http 594 \_ /usr/bin/httpd -k 启动 -DFOREGROUND
http 3121 \_ /usr/bin/httpd -k 启动 -DFOREGROUND

Apache 支持实时配置重新加载以及“优雅”重启。要实现此功能,“主”进程需要继续以 root 身份运行,以便能够绑定到新端口、重新读取 TLS 密钥文件等。

然而,请求由 Apache 处理工人进程 – 这些进程永远不会以 root 身份运行。它们只能记录文件,因为它们继承了已打开来自主进程的“access.log”的文件描述符。

(访问权限总是在打开时检查,而不是在写入时检查,以便准确允许这种使用以及禁止可能的权限升级。)

相关内容