Linux:如何对由日志轮换创建的新创建的日志强制执行特定权限?

Ita*_*not 17 log-files logrotate user-permissions

我注意到正在创建的邮件日志是/var/log由 root(用户和组)创建和拥有的。我写了一个监控日志的 Nagios 检查,为了允许 Nagios 用户访问它,我给了other组读取权限,即:

chmod o+r /var/log/maillog
Run Code Online (Sandbox Code Playgroud)

现在想想,这只是一个日志文件,当日志文件被填满时,日志轮换机制会重命名这个文件并打开一个新maillog文件,但新文件不会有read write我允许的。

所以我的问题是,如何确保日志轮换机制将为 Nagios 用户创建具有正确权限的所有新邮件日志文件?

提前致谢

Sve*_*ven 25

logrotatecreate选项:

create mode owner group
Run Code Online (Sandbox Code Playgroud)

旋转后(在运行 postrotate 脚本之前)立即创建日志文件(与刚刚旋转的日志文件同名)。 mode以八进制指定日志文件的模式(与 chmod(2) 相同),owner 指定将拥有日志文件的用户名,group 指定日志文件所属的组。任何日志文件属性都可以省略,在这种情况下,新文件的这些属性将使用与原始日志文件相同的值作为省略的属性。可以使用 nocreate 选项禁用此选项。

更多信息与man logrotate

像这样使用它:

/var/log/maillog {
....
        create 664 user group
....
}
Run Code Online (Sandbox Code Playgroud)

/etc/logrotate.conf或单独的文件中,/etc/logrotate.d并检查是否没有其他文件已经覆盖它。如何配置取决于您的操作系统(例如在 Ubuntu 上,这是在rsyslog配置中处理的)。

  • @ItaiGanot您还应该修复您的系统日志配置,以便它以适当的权限创建文件,而不是您进行初始chmod。 (2认同)
  • @ItaiGanot 不!这意味着您应该找出正在使用的 syslog 程序(可能是 `syslog-ng` 或 `rsyslog`)并更改其配置。这是必要的,因为当您的系统重新启动或您的 syslog 程序由于其他原因重新启动时,它可能会以错误的权限重新创建文件。 (2认同)