Logrotate permission Denied

  • Guten Abend


    Heute habe ich mal wieder ein Problem gefunden, finde aber das Problem gerade nicht.

    Ich habe von nginx die Logfiles auf einem mounted share. Dies klappt auch gut. z.B. access.log hat immer sauber alle Einträge.


    Einmal am Tag führt er die Logrotate aus. Als user ist dort "www-data adm" drin wie es auch Standardmässig vergeben ist. Jedoch erscheint im nginx log trotzdem folgender Fehler das er es nicht rotieren kann

    Code
    2019/04/05 19:49:51 [emerg] 1574#1574: open() "/mnt/wwwData/logs/domain/access.log" failed (13: Permission denied)

    Hat jemand eine Idee wie ich das beheben könnte? Der Besitzer der Datei:

    Code
    -rw-r--r-- 1 oliver www-data

    und nginx scheint ja auch schreiben zu können.

  • Hay,

    /mnt/wwwData/logs/domain/access.log

    Es ist mir klar, dass Du den Mount selbst gemacht hast, aber da Lower Camel Case für Linux-Dateinamen (wwwData) eher ungewöhnlich ist, wollte ich da mal kurz darauf hinweisen - vielleicht ist es ja nur ein Schreibfehler.


    CU, Peter

    Peter Kleemann // https://www.pkleemann.de // +49 621 1806222-0 // Kann Programme, Internet, Netzwerke und Telefon.

  • Was ich noch herausgefunden habe: für die Logrotation existiert ja die Konfiguration /etc/logrotate.d/nginx

    Ein /usr/sbin/logrotate -dfv /etc/logrotate.d/nginx zeigt mir nun jedoch an, dass er nur die Logs in /var/log/nginx rotiert. In der selben Zeit werden jedoch auch die auf dem NFS Mount rotiert. Ist dies irgend ein Prozess von nginx der dies auslöst? Ansonsten müsste ich diesen ja beim Parameter -d sehen.

  • Es ist mir klar, dass Du den Mount selbst gemacht hast, aber da Lower Camel Case für Linux-Dateinamen (wwwData) eher ungewöhnlich ist, wollte ich da mal kurz darauf hinweisen - vielleicht ist es ja nur ein Schreibfehler.

    Ok Danke. Ich war mir das in der Entwicklung teils gewöhnt und hab mir da gar keinen Kopf gemacht. Ich werde dies daher bei gelegenheit anpassen.

  • Achtung: Nicht nginx rotiert seine Logs, sondern logrotate, ein Systemdienst. Was steht denn in der /etc/logrotate.d/nginx drin? Hast du das System denn selbst aufgesetzt?


    Dieser Fehler im nginx kommt nicht durch das logrotate, sondern dass nginx nicht ins log schreiben kann, was auch klar ist, wenn die Datei "oliver" gehört, die Gruppe zwar www-data ist, aber nur Leserechte hat.

  • Hallo Paul


    Auch dir danke für deine Antwort.


    Installiert ist es per apt-get.


    Die logrotate.d/nginx

    diese habe ich nicht geändert. Also versuchsweise natürlich, aber es ist alles wieder beim alten.


    Achtung: Nicht nginx rotiert seine Logs, sondern logrotate, ein Systemdienst. Was steht denn in der /etc/logrotate.d/nginx drin? Hast du das System denn selbst aufgesetzt?


    Dieser Fehler im nginx kommt nicht durch das logrotate, sondern dass nginx nicht ins log schreiben kann, was auch klar ist, wenn die Datei "oliver" gehört, die Gruppe zwar www-data ist, aber nur Leserechte hat.

    nginx scheint jedoch in die Datei schreiben zu können. Die Datei /mnt/wwwData/logs/domain/access.log hat ja alle Einträge welche auch aktualisiert werden. Das heisst doch das nginx die Schreibrechte hat?

  • Ah, läuft dein nginx zufällig als User "oliver"? Also zumindest mit logrotate scheint das aber nichts zu tun zu haben. Logrotate sollte in diesem Ordner so gar nichts rotieren (oder gibt es da vielleicht irgendwo noch ein Symlink? /var/log/nginx -> /mnt/....), da es in der Konfig ja auch gar nicht definiert wurde.


    Wie oft tritt dieser Fehler denn auf? Einmal am Tag? In welchem Logfile genau erscheint denn der Fehler?

  • Der nginx läuft als Benutzer www-data

    /etc/nginx/nginx.conf

    Code
    user www-data;
    worker_processes  auto;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    .....

    Der Fehler tritt jeden Tag um 06.25 Uhr auf, und jedesmal natürlich nach dem ich /usr/sbin/logrotate -dfv /etc/logrotate.d/nginx ausführe. Der Fehler erscheint in /var/log/nginx/error.log. Die /var/log/nginx/error.log wird nach dem Befehl auch jedesmal sauber rotiert, und in der neuen error.log ist dann der Fehler auf dem NFS Share zu finden.


    Symlinks existieren keine.

    In der Webkonfigurationsdatei habe ich natürlich die beiden Zeilen

    Code
    access_log /mnt/wwwData/logs/domain/access.log;
    error_log /mnt/wwwData/logs/domain/error.log;

    drin stehen.

  • Paul hat ja bereits erwähnt, dass die Gruppe Schreibrechte braucht oder die Datei www-data gehören muss.


    Schönes Wochenende!

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Was passiert denn, wenn du dies manuell aufrufst?

    Code
    invoke-rc.d nginx rotate
    [ ok ] Re-opening nginx log files: nginx.

    Aber dort erscheint dann entsprechend der Fehler in der /var/log/nginx/error.log. Also scheint dort wirklich das Problem zu liegen. Die Frage ist nun nur noch wo

    Paul hat ja bereits erwähnt, dass die Gruppe Schreibrechte braucht oder die Datei www-data gehören muss.

    www-data hat ja schreibrechte ansonsten würde ja die access.log und error.log keine Einträge im NFS Share

  • www-data hat ja schreibrechte ansonsten würde ja die access.log und error.log keine Einträge im NFS Share

    Nein, du sagst doch selber:

    Zitat
    1. -rw-r--r-- 1 oliver www-data

    Schreibrechte haben also nur oliver und root.


    Probier doch mal ein chown www-data

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Ok. Ich dachte es reicht wenn die gruppe passt. Bitte entschuldige.

    Da es auf dem NFS Share mehrere Domains gibt mit anderen Benutzern, kann ich nicht einfach ein chown testen da ich dann auch die Übergeordneten Ordner auch alle anpassen muss. Gibt es eine Möglichkeit dies anders zu lösen/testen?


    Edit: Ich habe nun kurz auf dem Storageserver von einer Datei die rechte auf www-data geändert. Dies würde gehen. Die Frage ist ob ich die Rotierung irgendwie hinbekomme. Ggf das ich für jeden Benutzer eine Rotierung separat mache. Aber die Anpassung in der /etc/logrotate.d/nginxwar ja nicht die Lösung

  • Kein Problem :)


    Was funktioniert denn am logrotate nicht? Soweit ich weiß wird der doch von root ausgeführt, da sollten ja die Rechte egal sein. Oder wird die Datei wieder als oliver angelegt? Das passt dann nämlich nicht mit der Config oben zusammen.

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Wenn ich die Rechte auf www-data ändere geht es. Ich habe das nun mal so gemacht und werde ein paar Tage beobachten ob es läuft. Nochmals danke.

    Ich denke aber ich war da im Kopf auf dem Holzweg bitte entschuldige.

  • Dafür ist das Forum ja da :)


    Log-Dateien gehören grundsätzlich root oder dem User des Diensts, der sie beschreibt.

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com