Wie soll ich log aus einem Nicht-root Debian Linux-Daemon?
Frage
Ich bin einen neuen Dämon zu schreiben, die auf Debian Linux gehostet werden.
Ich habe festgestellt, dass / var / log Wurzel hat nur Berechtigungen zu schreiben, so dass mein Dämon dort nicht schreiben kann Log-Dateien.
Allerdings, wenn es dort schreibt, scheint es, es automatische Log-Rotation gewinnen wird, und auch arbeiten, wie ein Benutzer erwarten könnte.
Was ist der empfohlene Weg für ein Daemon Einträge schreiben protokollieren, die in / var erscheinen / log, ohne als root ausgeführt werden zu müssen?
Der Dämon ist ein Webserver, so wird der Protokolldatenverkehr Apache ähnlich sein.
Lösung
Sie sollten ein Unterverzeichnis wie /var/log/mydaemon
Erstellen der Benutzer den Besitz des Daemons mit
Andere Tipps
Als root ein Logfile gibt und die Dateien Besitzer Benutzer auf den Webserver ändern:
# touch /var/log/myserver.log
# chown wwwuser /var/log/myserver.log
Dann kann der Server auf die Dateien schreiben, wenn sie als Benutzer wwwuser
laufen. Es wird nicht die automatische Log-Rotation gewinnen, though. Sie haben die Log-Datei hinzufügen, um /etc/logrotate.conf
oder /etc/logrotate.d/...
und machen Sie Ihren Server die Log-Datei wieder öffnen, wenn logrotate Signale es sollte.
Sie können auch verwenden syslog
für die Protokollierung, wenn das Ihr Szenario besser passen.
Zwei Optionen:
- Starten Sie als
root
, die Datei öffnen, dann fallen Erlaubnissesetuid
. (Ich erinnere mich nicht die genaue Systemaufrufe Berechtigungen für dropping.) Sie werden dies trotzdem zu tun haben, wenn Sie 80 auf TCP-Port binden möchten oder einen beliebigen Port unter 1024. - Erstellen Sie ein Unterverzeichnis wie / var / log / mydaemon der Benutzer den Besitz des Daemons mit, wie WiseTechi sagte .
Dateien unter /var/log
werden nicht automatisch gedreht wird; stattdessen Rotation wird durch /etc/logrotate.conf
und Dateien unter /etc/logrotate.d
gesteuert.
Mit dem "Logger" Befehl