17

尝试使用 logrotate 并在为 logrotate.d 中的特定定义运行日志轮换脚本时收到以下错误

error: error creating state file /var/lib/logrotate/status: Permission denied

/var/lib/logrotate$ ls -lah
total 12K
drwxr-xr-x  2 root root 4.0K 2012-05-11 06:25 .
drwxr-xr-x 43 root root 4.0K 2012-05-18 08:07 ..
-rw-r--r--  1 root root  911 2012-05-25 06:25 status

我还没有触及那条路径,所以我想知道为什么它会默认创建一个错误......

4

3 回答 3

34

不要 chmod将默认状态文件设置为666。如果你chmod这样做,系统上的每个用户都可以logrotate用作攻击媒介。

只需使用 option 为您的用户(假设您尝试以普通用户身份运行它)定义一个(私有)状态文件[-s|--state file]

于 2012-10-20T18:36:30.033 回答
4

您确定以 root 身份运行此命令吗...?;) 如果是,请检查系统上是否有 AppArmour - 如果是,请检查它的配置或卸载它(Ubuntu 案例)。

于 2012-05-25T21:40:18.643 回答
2

crontab 中有这一行:

*  *  *  *  *   root    logrotate -s /var/run/logrotate.status /etc/logrotate.conf

即使它以root身份运行,我也无法摆脱“错误:错误创建状态文件/var/run/logrotate/status:权限被拒绝”错误。

所以我只是使用了一个不同的目录:

*  *  *  *  *    root    /usr/sbin/logrotate -s /var/log/logrotate.status -v /etc/logrotate.conf >/tmp/logrotate.out 2>&1

使用了来自https://serverfault.com/questions/762587/daily-logrotate-error-creating-unique-temp-file-permission-denied的调试思想,但对其进行了更改,因此输出文件不会无限增长,这将是具有讽刺意味。

在这种情况下,详细模式没有提供任何额外的信息,顺便说一下,它正在读取的配置文件和相同的错误消息。但最好将输出放在该文件上,而不是放在 /var/mailspool 中。

于 2017-07-12T14:33:09.923 回答