我正在运行一个干净的 ubuntu 服务器并让 apache 工作。
我注意到 apache 访问和错误日志归 root 所有:
-rw-r----- 1 root adm 10531 Oct 11 00:43 access.log
-rw-r----- 1 root adm 58839 Oct 11 00:43 error.log
我只是想知道如果 apache 只能由 root 写入,它实际上是如何写入日志的。
它是否默认使用 syslog?
谢谢!
我正在运行一个干净的 ubuntu 服务器并让 apache 工作。
我注意到 apache 访问和错误日志归 root 所有:
-rw-r----- 1 root adm 10531 Oct 11 00:43 access.log
-rw-r----- 1 root adm 58839 Oct 11 00:43 error.log
我只是想知道如果 apache 只能由 root 写入,它实际上是如何写入日志的。
它是否默认使用 syslog?
谢谢!
嗯......据我所知,一旦打开文件,权限的更改就无关紧要了。文件打开后,每次读/写都不会重新检查访问控制。
因此,我认为会发生这种情况:顶级 apache 服务器以 root 身份运行(以便它可以打开端口 80),它也会打开日志文件。启动服务器子进程时,它可能会执行一个 fork() 将打开的文件描述符复制到新的子进程(即日志文件描述符等几个),因此子进程可以写入日志文件,即使它不是 root,然后将子进程 UID 更改为请求的任何内容。
apache 服务器最初以 root 身份启动,然后它创建单独的线程,以较低特权(通常是 www-data)用户的身份运行,以便服务器内容。主 apache 进程可以写入这些文件,因为它仍然以 root 身份运行。