Apache 不是应该只绑定到端口80
,root
然后切换到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”的文件描述符。
(访问权限总是在打开时检查,而不是在写入时检查,以便准确允许这种使用以及禁止可能的权限升级。)