Назад | Перейти на главную страницу

Как запретить logrotate изменять владельца повернутых журналов

У меня есть владелец файла журнала от пользователя apache, которого я хотел бы изменить с помощью logrotate.

Я хотел бы сделать это, запустив logrotate от имени другого пользователя, скажем «web», с использованием стратегии copytruncate.

Это не с этой ошибкой:

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

Но только потому, что logrotate пытается изменить владельца нового файла на владельца повернутого файла, то есть apache. Но меня не волнует, что у новых файлов один и тот же владелец, если logrotate будет создавать копии с 'web' в качестве владельца, это будет нормально, и тогда он может работать нормально.

Так есть ли способ остановить logrotate от смены владельца скопированного файла?

Я использую create директива в моем /etc/logrotate.d/ файлы. Пример:

create 0664 www-data www-data

create вероятно будет делать то, что вы описываете в последнем предложении вашего вопроса, но этот вариант несовместим с copytruncate, который вы также хотите использовать.

Я решил ту же проблему с параметрами 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
}