Comment empêcher logrotate de changer le propriétaire des journaux tournés

9

J'ai un propriétaire de fichier journal par l'utilisateur «apache» que je voudrais faire pivoter avec logrotate.

J'aimerais le faire en exécutant logrotate en tant qu'utilisateur différent, dites «web» en utilisant la stratégie copytruncate.

Cela échoue avec cette erreur:

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

Mais uniquement parce que logrotate essaie de changer le propriétaire du nouveau fichier en propriétaire du fichier pivoté, c'est-à-dire apache. Mais je ne me soucie pas que les nouveaux fichiers aient le même propriétaire, si logrotate créerait des copies avec 'web' en tant que propriétaire, ce serait bien et cela pourrait fonctionner correctement.

Existe-t-il un moyen d'empêcher logrotate de changer le propriétaire du fichier copié?

Leven
la source
1
Laissant cela à la postérité: utiliser postscriptet chown "$1"n'est probablement pas approprié ici car cela n'empêchera pas logrotate de ne pas définir le propriétaire.
David Lord

Réponses:

7

J'utilise la createdirective dans mes /etc/logrotate.d/fichiers. Exemple:

create 0664 www-data www-data
Paul
la source
1

createfera probablement ce que vous décrivez dans la dernière phrase de votre question, mais cette option est incompatible avec copytruncate, que vous dites également vouloir utiliser.

craq
la source
0

J'ai résolu le même problème avec les options postrotate et 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
la source