Dateien und Dienste¶
- /usr/local/bin/pss
Ausführbare Datei.
- /opt/pss/config/pss.properties
Globale Einstellungen, Protokolle, Ordnerpfade usw. Nach Änderungen den Dienst neu starten.
- /opt/pss/config/pss.json
Haupt-Einstellungsdatei. Wird automatisch erstellt und aktualisiert. Beim Start versucht der Dienst, genau diese Datei zu laden. Aufbau der Datei — siehe Die Einstellungsdatei pss.json. Die Datei enthält Passwörter, daher kann sie ab Version 2.0.2.420 — wie pss_last.json, pss_back.json und das Verzeichnis bad/ — nur der Dienstbenutzer lesen (Rechte
0600). Unterrootbehalten die Dateien den Eigentümer des Einstellungsverzeichnisses.- /opt/pss/config/pss_last.json
Eine Kopie der letzten pss.json, die sauber geladen wurde. Sie wird bei jedem Start neu geschrieben, bei dem tatsächlich pss.json geladen wurde; ein Start auf einer Ausweichdatei aktualisiert sie nicht — sonst wäre sie nicht mehr die letzte funktionierende. Sie dient als erste Rückfallebene, wenn die Hauptdatei nicht ausgewertet werden konnte. Auf einem Knoten, der seit der Installation nie neu gestartet wurde, und dort, wo das Einstellungsverzeichnis schreibgeschützt ist, gibt es diese Datei nicht.
- /opt/pss/config/pss_back.json
Sicherungskopie der vorherigen funktionierenden Konfiguration. Sie entsteht nur beim Wiederherstellen der Einstellungen aus einer zuvor gespeicherten Kopie in der Weboberfläche (Wartung) und dient als Rückfallebene nach pss_last.json. Eine regelmäßige Sicherung führt der Dienst nicht, auf einem Knoten, auf dem die Einstellungen nie wiederhergestellt wurden, gibt es diese Datei daher nicht.
- /opt/pss/config/pss_default.json
Standard-Einstellungsdatei. Wird mit dem Paket ausgeliefert und als letzte Ausweichoption verwendet, wenn weder pss.json noch pss_last.json noch pss_back.json geladen werden können. Aus ihr wird auch beim allerersten Start die betriebsbereite pss.json erzeugt: Die Datei legt den Port der Weboberfläche
8808sowie das Konto admin / admin fest.- /opt/pss/config/bad/
Archiv beschädigter pss.json-Dateien. Wenn die Haupt-Einstellungsdatei beim Start nicht ausgewertet werden kann, wird sie mit einem Namen der Form pss_YYYYMMDD_HHMMSS.json hierher verschoben. Das Verzeichnis wird automatisch erstellt und wächst nicht unbegrenzt: Es bleiben die zwanzig Dateien mit den höchsten Namen. Näheres siehe Abschnitt Verhalten beim Start und bei Konfigurationsfehlern.
- /opt/pss/data
Ordner zur Datenablage. Wird automatisch erstellt und aktualisiert. Kann in der Datei mit den globalen Einstellungen geändert werden.
- /usr/lib/systemd/system/pss.service
systemd-Unit-Datei des Dienstes.
- /var/log/pss
Ordner für die Protokollausgabe. Kann in der Datei mit den globalen Einstellungen geändert werden.
Der Dienstname lautet pss. Wird unter dem Benutzer pss ausgeführt.
Die Arbeit mit dem Schlüssel übernimmt das Paket des Schutzsystems aksusbd — es umfasst die Dienste hasplmd und aksusbd. Das Paket pstreamer deklariert eine Abhängigkeit davon, Version 10.33 oder neuer: Es enthält den Schutzdienst selbst nicht, liegt aber mit ihm im selben Repository, sodass der Paketmanager ihn zusammen mit ihm installiert. Ein älterer Schutzdienst kann die Bibliotheken des Herstellers, die pstreamer in /var/hasplm ablegt, nicht laden.
Verhalten beim Start und bei Konfigurationsfehlern¶
Beim Start versucht der Dienst nacheinander, die Einstellungsdateien aus dem Ordner /opt/pss/config zu laden:
pss.json — Haupt-Einstellungsdatei.
pss_last.json — eine Kopie der letzten Konfiguration, die sauber geladen wurde.
pss_back.json — Sicherungskopie der vorherigen funktionierenden Konfiguration.
pss_default.json — mit dem Paket ausgelieferte Standardeinstellungen.
Verwendet wird die erste erfolgreich geladene Datei. Fehlen alle vier Dateien oder sind sie beschädigt, startet der Dienst mit leeren Einstellungen — in ihnen gibt es kein einziges Konto. Der Administrator wird in diesem Fall von Hand angelegt: den Dienst stoppen, in pss.json unter web-server.login einen Eintrag mit den Schlüsseln id, login und password ergänzen und den Dienst wieder starten. Wird die Datei bei laufendem Dienst bearbeitet, überschreibt dieser die Änderung aus dem Speicher (API oder Einstellungsdatei).
Aus der Existenz von pss_last.json folgen zwei Dinge. Erstens: Das Löschen von pss.json setzt den Knoten nicht mehr auf einen leeren Stand zurück, denn der Dienst kommt auf pss_last.json hoch und schreibt sie in pss.json zurück. Einen Alarm gibt es dabei nicht, unbemerkt bleibt es aber auch nicht: Im Protokoll bleibt ein Eintrag, und in der Weboberfläche erscheint eine Startmeldung. Um den Knoten wirklich zurückzusetzen, löscht man pss.json zusammen mit pss_last.json und pss_back.json — dann kommt der Dienst auf pss_default.json hoch. Alles Übrige im Einstellungsverzeichnis darf nicht angerührt werden: Ohne pss.properties startet der Dienst überhaupt nicht. Zweitens: pss_last.json ist genau so gut, wie der letzte saubere Start frisch ist. Einstellungen, die über die Weboberfläche geändert wurden und nie einen Neustart überstanden haben, gibt es nur in pss.json, und ein Rückfall auf die letzte funktionierende Konfiguration bewahrt sie nicht.
Unzulässige Einstellungsdatei. Konnte pss.json nicht gelesen werden, verschiebt der Dienst sie in das Archiv /opt/pss/config/bad/ unter dem Namen pss_YYYYMMDD_HHMMSS.json; Datum und Uhrzeit im Namen sind der Zeitpunkt der Archivierung in UTC, dieselbe Zeitrechnung, die das Protokoll standardmäßig verwendet. Danach setzt der Dienst das Laden in der üblichen Reihenfolge fort und speichert die funktionierende Konfiguration aus derjenigen Datei, die geladen wurde, erneut in pss.json. Die Einzelheiten (Name des Schlüssels, Beschreibung des Fehlers, Name der Datei im Archiv) werden in das Betriebsprotokoll geschrieben, und den Archivpfad nennt auch der Alarm über das fehlgeschlagene Laden direkt.
Das Laden wird abgebrochen bei: einem JSON-Syntaxfehler, dem Wert null, einer falschen Form des Wertes (ein Objekt dort, wo ein einzelner Wert erwartet wird, und umgekehrt), einer Zahl oder einem fremden Wort anstelle von true und false, einer zu langen Zeichenkette, einem fehlenden oder doppelten Bezeichner eines Array-Eintrags, der Wiederholung eines als eindeutig deklarierten Wertes. Ein unbekannter Schlüssel verwirft die Datei nicht: Er wird ignoriert, im Protokoll erscheint eine Warnung mit Namen von Abschnitt und Schlüssel, und beim nächsten Speichern verschwindet der Schlüssel aus der Datei. Die vollständige Darstellung dessen, was der Dienst beim Lesen der Datei annimmt und was er ablehnt, steht in Was der Dienst beim Lesen der Datei tut.
In das Archiv gelangt nur die Haupt-pss.json. Die Dateien pss_last.json, pss_back.json und pss_default.json werden bei Beschädigung nicht archiviert — die Protokolleinträge reichen für die Diagnose aus, und die Dateien selbst bleiben an ihrem Platz und können manuell korrigiert werden.
Liegt in /opt/pss/config/bad/ bereits eine Datei mit demselben Zeitstempel (etwa bei zwei fehlgeschlagenen Starts in ein und derselben Sekunde), erhält die neue ein Zählsuffix — pss_YYYYMMDD_HHMMSS_2.json und weiter; die zuvor gespeicherte Kopie geht dabei nicht verloren. Das Verzeichnis kann nicht unbegrenzt wachsen: Mit dem Erscheinen einer neuen Kopie bleiben die zwanzig Dateien mit den höchsten Namen darin, die übrigen werden gelöscht. Für die Archive, die der Dienst nach der Zeit benennt, sind das genau die zwanzig jüngsten; fremde Dateien, die im Verzeichnis liegen bleiben, zählen ebenfalls mit und belegen diese Plätze, deshalb sollte in bad/ nichts Überflüssiges aufbewahrt werden. Eine fehlgeschlagene Änderung — eine Kopie; ein Neustart für sich erzeugt keine neuen Kopien, denn die abgelehnte Datei ist bereits verschoben und an ihrer Stelle eine funktionierende geschrieben.
Numerische Werte außerhalb des zulässigen Bereichs. Wenn in der Einstellungsdatei ein numerischer Wert vorkommt, der kleiner als der zulässige Mindestwert oder größer als der zulässige Höchstwert für diesen Parameter ist, verwirft der Dienst die Datei nicht als Ganzes. Stattdessen wird eine Warnung in das Protokoll geschrieben, die den Parameternamen, den gelesenen Wert und die angewendete Grenze angibt, und der Wert selbst wird auf die nächstgelegene zulässige Bereichsgrenze (den Mindest- oder Höchstwert) gesetzt. Nach Abschluss des Ladevorgangs speichert der Dienst pss.json automatisch mit den bereits korrigierten Werten erneut, sodass diese Warnungen beim erneuten Start nicht mehr erscheinen.
Neben dem Protokoll meldet die Startbenachrichtigung des Dienstes in der Weboberfläche die Korrektur: Sie nennt die Anzahl der auf einen Grenzwert gesetzten Werte und verweist für Einzelheiten auf das Protokoll. Lesen Sie sie nach einem Update, das einen Bereich verengt hat: Die Korrektur erfolgt still, und bei einem Aufbewahrungsparameter bedeutet sie, dass die Daten jenseits der neuen Grenze beim nächsten Bereinigungslauf gelöscht werden.
Dieses Verhalten gilt nur beim erstmaligen Laden der Einstellungsdatei. Beim Ändern der Einstellungen über die Weboberfläche oder die HTTP API (Steuerung über die HTTP API) werden Werte außerhalb des zulässigen Bereichs weiterhin mit einem Fehler abgelehnt — ohne automatische Korrektur.
Eine abgelehnte Änderung setzt das geänderte Objekt ab Version 2.0.2.409 in den vorherigen Zustand zurück; auf einem Knoten älterer Version bleibt angewendet, was der Knoten vor dem ungültigen Wert bereits gelesen hat (Wie Fehler eintreffen).
Die Datei von Hand bearbeiten, sie gegen das Schema prüfen und die Einstellungen auf einen anderen Knoten oder eine andere Version übertragen — Die Einstellungsdatei pss.json und Einstellungen bearbeiten, prüfen und übertragen.