Apache-2.2

告訴 Apache 以不同的使用者身份創建 error.log/access.log

  • January 30, 2020

如果您告訴 Apache 使用 CustomLog 文件,Apache2 將在啟動時創建這些文件。它總是將它們提供給使用者 root:root。我怎樣才能改變這種行為?

背景

Apache 執行

SuexecUserGroup www-data www-data

同時,我使用 CustomLog 將其輸出到腳本。該腳本從 IP 中刪除兩個字節,然後寫入日誌文件。由於您不能告訴 Apache 從 error.log 中省略 IP,因此此管道輸出很重要(關於德國隱私法)。

如果我的自定義日誌不屬於www-data ,則該腳本無法訪問。

如果我更換所有者,一切正常。

我也知道如何在logrotate重命名並重新創建日誌文件時更改文件所有者。

但是,如果我停止 Apache 程序,刪除日誌文件,然後重新啟動 Apache 程序,則會創建屬於 root:root 的新文件。

我如何告訴 Apache 在啟動時創建新的無效文件作為 www-data/for www-data

這個句子:

如果我的自定義日誌不屬於 www-data,則腳本無法訪問它。

http://httpd.apache.org/docs/current/logs.html#piped直接矛盾:

管道日誌程序由父 Apache httpd 程序產生,並繼承該程序的使用者 ID。這意味著管道日誌程序通常以 root 身份執行。因此,保持程序簡單和安全非常重要。

如果您描述的場景在某種程度上是正確的,您仍然可以通過

  1. 忽略配置文件中給出的日誌文件名
  2. 在腳本中設計自己的日誌文件名
  3. 將標準輸出重定向到您選擇的文件,如 (2)

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