So verhindern Sie, dass logrotate den Eigentümer der gedrehten Protokolle ändert

9

Ich habe einen Logfile-Besitzer vom 'Apache'-Benutzer, den ich mit Logrotate drehen möchte.

Ich möchte dies tun, indem ich logrotate als einen anderen Benutzer ausführe, z. B. "web" mit der Strategie "copytruncate".

Das schlägt mit diesem Fehler fehl:

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

Aber nur, weil logrotate versucht, den Besitzer der neuen Datei in den Besitzer der gedrehten Datei zu ändern, dh Apache. Aber es ist mir egal, ob die neuen Dateien denselben Eigentümer haben, wenn logrotate Kopien mit 'web' als Eigentümer erstellen würde, wäre das in Ordnung und dann könnte es gut funktionieren.

Gibt es also eine Möglichkeit, zu verhindern, dass logrotate den Eigentümer der kopierten Datei ändert?

Leven
quelle
1
Dies für die Nachwelt belassen : Die Verwendung von postscriptund chown "$1"ist hier wahrscheinlich nicht geeignet, da dadurch nicht verhindert wird, dass logrotate den Eigentümer nicht festlegt.
David Lord

Antworten:

7

Ich benutze die createDirektive in meinen /etc/logrotate.d/Dateien. Beispiel:

create 0664 www-data www-data
Paul
quelle
1

createwird wahrscheinlich das tun, was Sie im letzten Satz Ihrer Frage beschrieben haben, aber diese Option ist nicht kompatibel mit copytruncateder Option , die Sie auch verwenden möchten.

craq
quelle
0

Ich habe das gleiche Problem mit Optionen für Postrotate und Prerotate gelöst:

/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
}
Wsewolod Gromow
quelle