Logrotate 权限冲突

Logrotate 权限冲突

我有一个装满日志文件的文件夹,我正在用它logrotate轮换它们。

直到最近,我只有 Apache 日志文件 - access.log 和 error.log。我添加了来自守护进程的新日志 daemon.log。守护进程日志由以用户身份运行的守护进程写入www-data

运行时,logrotate会创建一个新日志,其权限为640、用户root和组adm。Apache 可以使用这些权限写入访问和错误日​​志,但我以 身份运行的守护进程www-data却不能。

在我看来,有以下几种选择:

  1. 更改logrotate配置以手动指定哪些日志文件被赋予哪些权限。但这意味着如果我添加新的日志文件,我需要记住配置logrotate来管理它。
  2. 修改logrotate脚本以某种方式为 daemon.log 文件创建例外。这可能吗?
  3. 将守护进程日志移至新文件夹,并使用单独的logrotate脚本来管理新文件夹中的日志文件。这很简单,但如果可以的话,我希望将所有日志放在一起。
  4. 设置logrotate为在不同的用户和组下创建文件。这似乎有丢失日志信息的风险。
  5. www-data用户添加到adm组,并将权限设置为660。我不喜欢让www-data用户无意间访问其他内容。
  6. 将日志文件的权限设置为666。这似乎是个粗暴的解决方案。

这些都不是理想的,而且我敢肯定其中有几个很糟糕。还有其他选择吗,或者其中一个是我最好的选择?我遗漏了什么吗?

答案1

标准答案是让 logrotate 创建具有进程写入所需的所有权的文件。(我不明白为什么这会带来丢失日志信息的风险;也许你可以详细说明为什么你认为这是一种风险。)

您可以通过添加行来实现

create owner group

到 logrotate 配置的相关部分。如果你想让文件具有特定权限,你可以添加

create mode owner group

反而。

例子:

create 644 www-data www-data

相关内容