Apache-2.2
告訴 Apache 以不同的使用者身份創建 error.log/access.log
如果您告訴 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 身份執行。因此,保持程序簡單和安全非常重要。
如果您描述的場景在某種程度上是正確的,您仍然可以通過
- 忽略配置文件中給出的日誌文件名
- 在腳本中設計自己的日誌文件名
- 將標準輸出重定向到您選擇的文件,如 (2)