Permissions

將日誌文件添加到 /var/log/apache2

  • July 14, 2019

我正在嘗試儲存 Lumen php 框架日誌/var/log/apache2/而不是其安裝目錄/儲存/日誌/文件夾。

Lumen 端很好,因為我可以在 /tmp/ 中寫入日誌文件就好了。

即使經過半天的研究、試驗和撓頭,我仍然無法理解的是:

  • 我正在執行 Ubuntu 16.04
  • 儲存在 /var/log/apache2/ 中的日誌文件具有所有權 root:adm 和 priv -rw-r–r–
  • Apache 僅作為 www-data 使用者和 www-data 組的一部分執行
  • 我知道 logrotate 有配置行“create 640 root adm”,所以新的日誌文件是這樣創建的
  • 我相信 selinux 沒有執行(找不到 sestatus 命令…)

所以…. Apache 怎麼能寫它的日誌文件?

澄清這個謎團可能會解決我的主要問題。我真的想將 Lumen 框架日誌儲存在 Lumen 安裝目錄之外,因為它被持續集成過程所取代。

我對主題和基礎知識進​​行了很多研究,但找不到答案。

簡短回答:因為 Apache 父程序始終由 root 啟動和擁有。因此它可以統計和寫入/var/log/apache2/

root     30089  0.0  0.4 518800 29604 ?        Ss   Jul05   0:09 /usr/sbin/apache2 -k start
www-data 13076  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13077  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13079  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13080  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13081  0.0  0.2 521180 18036 ?        S    00:05   0:00  \_ /usr/sbin/apache2 -k start
www-data 13288  0.0  0.2 521180 18036 ?        S    00:17   0:00  \_ /usr/sbin/apache2 -k start

/var/log/apache2避免並將其留給 apache2 程序(僅)可能是一個好主意。就個人而言,我會創建一個新目錄,例如/var/log/lumen/(順便說一句:您不必使用該/var/log/區域進行日誌記錄),該目錄由您要記錄的給定父程序擁有。(可選)設置logrotate.d/類似於 apache2 以偶爾清理日誌文件夾。您還可以將組設置為admvia chown 並在 logrotate.d 中如上所述,以允許管理員組使用者訪問給定的日誌。

引用自:https://serverfault.com/questions/975151