Login
Newsletter
Werbung

Do, 19. März 2020, 15:00

Systemd Path Units zum Überwachen von Dateien und Verzeichnissen verwenden

Test der neuen Path Unit

Nun läuft unsere neue Path Unit und überwacht unsere Datei. Wenn ein Benutzer hinzugefügt, gelöscht oder geändert wird, wird die Datei /etc/passwd geändert. Die Path Unit erkennt diese Änderung und aktiviert die Service Unit.

Wir wollen also einmal einen Benutzer hinzufügen und sehen, was passiert.

[savona@putor ~]$ date
Sat 25 Jan 2020 02:27:12 PM EST
[savona@putor ~]$ sudo useradd test

Wir können nun in den Logs sehen, dass die Service Unit erfolgreich ausgeführt wurde.

Jan 25 14:27:19 putor systemd[1]: Started "Run script to send email alert".
Jan 25 14:27:19 putor systemd[1]: passwd-mon.service: Succeeded.

In den Postfix-Logs können wir ferner sehen, dass die E-Mail erfolgreich gesendet wurde.

Jan 25 14:27:19 putor postfix/pickup[1491]: D25F02E15BB: uid=0 from=<root>
Jan 25 14:27:19 putor postfix/cleanup[4293]: D25F02E15BB: message-id=<20200125192719.D25F02E15BB@putor>
Jan 25 14:27:19 putor postfix/qmgr[1492]: D25F02E15BB: from=<root@putor>, size=3826, nrcpt=1 (queue active)
Jan 25 14:27:20 putor postfix/smtp[4294]: D25F02E15BB: to=<*********@********.net>, relay=mail.******.net[*.*.*.*]:465, delay=0.64, delays=0.05/0.01/0.43/0.14, dsn=2.0.0, status=sent (250 OK id=1ivR5U-002kSc-Cq)
Jan 25 14:27:20 putor postfix/qmgr[1492]: D25F02E15BB: removed

Sieht aus, als hätte alles ohne Probleme geklappt.

Ansehen der Path Unit-Logs mit Journalctl

Einer der Vorteile der Nutzung von Systemd Path (oder Timer) Units ist, dass sie wie normale Services arbeiten. Das bedeutet, dass man sie mit systemctl steuern kann. Zudem sind ihre Logs im Systemd-Journal mittels journalctl verfügbar.

Um die entsprechenden Log-Einträge anzusehen, verwendet man journalctl mit der Option -u.

[savona@putor ~]$ sudo journalctl -u passwd-mon.path
-- Logs begin at Fri 2019-11-08 00:08:01 EST, end at Sun 2020-01-26 02:43:59 EST. --
Jan 25 13:10:57 putor systemd[1]: Started "Monitor the /etc/passwd file for changes".
Jan 25 13:30:00 putor systemd[1]: passwd-mon.path: Succeeded.
...OUTPUT TRUNCATED...

Man kann journalctl auch verwenden, um die Service-Unit zu betrachten. Für weitere Informationen zur Verwendung von journalctl kann man zum Beispiel »Viewing logs with journaltcl« lesen.

Fazit

In diesem Beispiel haben wir eine Systemd Path Unit eingerichtet, um die Datei /etc/passwd auf Änderungen zu überwachen. Wir haben eine Service Unit angelegt, die ein Skript startet, um eine E-Mail zu senden, wenn sich die Datei ändert.

In allen meinen Tests hat dies großartig funktioniert. Es sollte aber eines betont werden: Auch wenn das Beispiel die Datei /etc/passwd überwacht, sollte man dies nicht als Sicherheitsmaßnahme verstehen. Um unerwartete Änderungen an Dateien zu erkennen, gibt es weit bessere Werkzeuge. Ein solches Programm ist beispielsweise aide.

Es gibt realistischere Beispiele, wie man Path Units einsetzen kann. Ich habe zum Beispiel ein Skript angelegt, das alle fünf Minuten schaut, ob es in einem bestimmten Verzeichnis eine Datei gibt, und diese dann verarbeitet. Eine Path Unit wäre in diesem Fall sinnvoller.

Hinweis

Der Artikel wurde ursprünglich auf putorius.net veröffentlicht. Übersetzung und Veröffentlichung mit freundlicher Genehmigung des Autors.

  • Das Werk darf vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden, Abwandlungen und Bearbeitungen des Werkes müssen unter den gleichen Bedingungen weitergegeben werden. Der Name des Autors/Rechteinhabers muss in der von ihm festgelegten Weise genannt werden.

    - Weitere Informationen
Kommentare (Insgesamt: 30 || Alle anzeigen || Kommentieren )
Re[5]: incron (michse, So, 29. März 2020)
Re[14]: incron (jhohm, Sa, 21. März 2020)
Re[13]: incron (Ah je ..., Sa, 21. März 2020)
Re[12]: incron (Verfluchtnochmal_5987108, Fr, 20. März 2020)
Re[15]: incron (Verfluchtnochmal_5987108, Fr, 20. März 2020)
Pro-Linux
Pro-Linux @Twitter
Neue Nachrichten
Werbung