如何停止logrotate更改轮换的日志所有者


9

我有一个由“ apache”用户创建的日志文件所有者,我想使用logrotate进行旋转。

我想通过以其他用户身份运行logrotate来做到这一点,例如使用copytruncate策略说“ web”。

失败并显示此错误:

error: error setting owner of ./logfile.log.1: Operation not permitted

但这仅是因为logrotate尝试将新文件的所有者更改为旋转文件的所有者,即apache。但是我不关心拥有相同所有者的新文件,如果logrotate可以创建以“ web”作为所有者的副本,那就很好了,然后就可以正常工作了。

那么,有什么方法可以阻止logrotate更改复制文件的所有者吗?


1
留给后代使用:在此处使用postscriptchown "$1"可能不合适,因为它不会阻止logrotate未能设置所有者。
David Lord

Answers:


7

create/etc/logrotate.d/文件中使用了指令。例:

create 0664 www-data www-data

1

create可能会执行您在问题的最后一句话中描述的内容,但是此选项与并不兼容copytruncate,您也说要使用该选项。


0

我用postrotate和prerotate选项解决了相同的问题:

/opt/bars/web_edu/var/log/nginx*.log {
        su web_edu web_edu
        daily
    compress
        missingok
        rotate 30
        dateext
        notifempty
        create 0644 web_edu web_edu
        sharedscripts
        prerotate
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.log
        endscript
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` || true
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.gz
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.log
        endscript
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.