Como parar o logrotate de alterar o proprietário dos logs girados

9

Eu tenho um proprietário de arquivo de log pelo usuário 'apache' que gostaria de rotacionar com logrotate.

Eu gostaria de fazer isso executando logrotate como um usuário diferente, digamos 'web' usando a estratégia copytruncate.

Isso falha com este erro:

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

Mas apenas porque o logrotate tenta alterar o proprietário do novo arquivo para o proprietário do arquivo girado, ou seja, apache. Mas não me importo com os novos arquivos com o mesmo proprietário, se o logrotate criaria cópias com 'web' como proprietário, o que seria bom e, em seguida, poderia funcionar bem.

Portanto, existe alguma maneira de impedir que o logrotate altere o proprietário do arquivo copiado?

Leven
fonte
1
Deixando isso para a posteridade: use postscripte chown "$1"provavelmente não é apropriado aqui porque não impedirá que a rotação do log falhe ao definir o proprietário.
David Lord

Respostas:

7

Eu uso a creatediretiva em meus /etc/logrotate.d/arquivos. Exemplo:

create 0664 www-data www-data
Paulo
fonte
1

createprovavelmente fará o que você descreve na última frase da sua pergunta, mas essa opção é incompatível com a copytruncatequal você também diz que deseja usar.

craq
fonte
0

Resolvi o mesmo problema com as opções pós-rotação e pré-rotação:

/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
}
Vsevolod Gromov
fonte