У меня есть владелец файла журнала от пользователя 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
}