Cómo evitar que logrotate cambie el propietario de los registros rotados

9

Tengo un propietario de archivo de registro por el usuario 'apache' que me gustaría rotar con logrotate.

Me gustaría hacerlo ejecutando logrotate como un usuario diferente, digamos 'web' usando la estrategia copytruncate.

Eso falla con este error:

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

Pero solo porque logrotate intenta cambiar el propietario del nuevo archivo al propietario del archivo girado, es decir, apache. Pero no me importa que los nuevos archivos tengan el mismo propietario, si logrotate crearía copias con 'web' como propietario, estaría bien y luego podría funcionar bien.

Entonces, ¿hay alguna manera de evitar que logrotate cambie el propietario del archivo copiado?

Leven
fuente
1
Dejando esto para la posteridad: usar postscripty chown "$1"probablemente no sea apropiado aquí porque no evitará que logrotate no establezca el propietario.
David Lord

Respuestas:

7

Yo uso la createdirectiva en mis /etc/logrotate.d/archivos. Ejemplo:

create 0664 www-data www-data
Pablo
fuente
1

createprobablemente hará lo que describas en la última oración de tu pregunta, pero esta opción es incompatible con la copytruncateque también dices que quieres usar.

craq
fuente
0

Resolví el mismo problema con las opciones postrotate y 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
}
Vsevolod Gromov
fuente