尝试使用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
我没有触及那条路,所以我想知道为什么它会在默认情况下产生错误......
答案 0 :(得分:30)
不要 chmod
默认状态文件为 666 。如果您chmod
,系统中的每个用户都可以使用logrotate
作为攻击媒介。
只需为您的用户定义一个(私有)状态文件(假设您尝试以常规用户身份运行),并使用选项[-s|--state file]
。
答案 1 :(得分:2)
您确定以root身份运行此命令吗? ;) 我请检查系统上是否有AppArmour - 如果是,请检查它的配置或卸载它(Ubuntu案例)。
答案 2 :(得分:1)
crontab中有这一行:
* * * * * root logrotate -s /var/run/logrotate.status /etc/logrotate.conf
即使它以root身份运行,我也无法摆脱“错误:创建状态文件错误/ var / run / logrotate / status:Permission denied”错误。
所以我只使用了另一个目录:
* * * * * 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中。