iservchk-Skripte#

Die iservchk-Skripte, oder auch Module genannt, liegen im Verzeichnis /etc/iserv/chk.d und werden aus Vorlagen in /usr/share/iserv/iconf/etc/iserv/chk.d/ generiert. Die Skripte werden, sofern sie mit einer Nummer beginnen und keine Metainformationen enthalten, der Reihe nach abgearbeitet. Neuere iservchk-Skripte ohne Nummer am Anfang müssen Metainformationen enthalten, welche festlegen, wann sie ausgeführt werden sollen. Es können mehrere Skripte gleichzeitg abgearbeitet werden, wenn die Metainformationen das zulassen. IServ selbst bringt folgende Skripte, die aus verschiedenen IServ-Modulen stammen, mit:

Konfiguration

00config

Die Konfiguration verarbeiten und vervollständigen

01locale

Lokalisierung kompilieren

02sysctl

Kernelparameter setzen

03resolv

Namensauflösung konfigurieren

Systemkomponenten

10system

Systemnahe Dienste

10systemd

System- und Sitzungs-Manager systemd

11network

Netzwerk

11postgresdbupgrade

PostgreSQL Cluster Upgrade

11postgresql

Datenbankserver PostgreSQL

12bind

Nameserver bind

13cert

Client- und Webserverzertifikate

14apt

Paketmanager

15avast

Antivirus Avast

16syslogd

Systemprotokollierung syslog

17ntpd

Network Time Protocol Dienst (Zeitsynchronisierung)

Interne Dienste (werden von IServ benötigt)

21cyrus

Mailserver Cyrus

22samba

Datei- und Druckdienste für Windows Clients

23sessauthd

IServ Authentifizierungsdienst

Benutzer und Gruppen

30groups

IServ Systemgruppen

Benutzer-Dienste (können abgeschaltet werden)

40acpid

Steuerung ACPI-Ereignisse (Ausschalten, Neustart, Standby, …)

40apache

Webserver apache2

40apcupsd

Steuerung USV (unterbrechungsfreie Stromversorgung)

40avahi

Zeroconf Netzwerkkonfiguration Avahi

40cups

Druckserver CUPS

40dhcpd

DHCP-Server

40dpkg

Paketverwaltung

40etherpad

Kollaborativer Texteditor (IServ Modul Texte)

40exim

Message Transfer Agent (MTA) Exim

40fail2ban

Überwachung von Logdateien auf fehlgeschlagene Anmeldeversuche

40freeradius

RADIUS-Server FreeRADIUS

40greylistd

Mailserver Greylisting

40grub

Bootloader GRUB2

40incron

Dateiorientierte Ereignissteuerung incron

40iserv3

IServ 3

40mdadm

Steuerung/Überwachung Linux Software RAID

40mysql

Datenbankserver MySQL/MariaDB

40nat

Internetzugriff aus dem LAN

40netmond

Zentrales Monitoring der IServs

40nginx

Webserver nginx

40plan

IServ Modul Pläne

40proftpd

FTP-Server ProFTPd

40smartd

Festplattenüberwachung

40spamassassin

Spamfilter SpamAssassin

40squid

Webproxy squid

40sshd

SSH-Server OpenSSH

40tftpd

TFTP-Server

40timetable

IServ Modul Stundenplan

40ulogd

Netfilter Protokolldienst Ulogd

40webalizer

Logdateianalyse Webalizer

40wifi

IServ Modul WLAN

Wartung

60cron

Regelmäßig ausgeführte Wartungsaufgaben

60db

IServ Berechtigungen und Rollen

60import

IServ Modul Import

Aufräumen

80legacy

Überbleibsel von alten Versionen entfernen

Softwareverteilung

80win10reg

IServ Modul Softwareverteilung: Registry Patch Windows 10

80win7reg

IServ Modul Softwareverteilung: Registry Patch Windows 7

80win8reg

IServ Modul Softwareverteilung: Registry Patch Windows 8.1

Voreinstellungen

90defaults

Alte Daten konvertieren, Standardeinstellungen setzen

90regdns

Automatische Zonenverwaltung und dynamischer DNS Client

98display

IServ Display: Linux-basierendes Anzeigesystem für den Infobildschirm

Für neue Skripte sollte ein Name ohne vorangestelle Nummer gewählt werden. Skripte mit vorangestellter Nummer entsprechen dem Legacy-Format, bei dem keine expliziten Abhängigkeiten festgelegt werden müssen.

Syntax#

Die Skripte sind einfache Textdateien. Befehle beginnen immer in der ersten Spalte, umgebrochene Zeilen werden mit 2 Leerzeichen, in Ausnahmefällen auch Tabs, eingerückt. Die Quoting-Regeln für die Parameter entsprechen denen der Bash. Für Dateinamen ist Globbing aktiv, d. h. Eingaben mit Zeichen wie *, ?, {...} oder [...] werden ggf. zu einer Dateiliste erweitert.

Groß-/Kleinschreibung wird bei den Befehlen nicht unterschieden, der Übersicht halber sollten sie aber in der hier angegebenen Form verwendet werden. Einfache spitze Klammern geben einzelne Parameter an, doppelte solche, die mehrfach angegeben werden können. Eckige Klammern stellen Shell-Skripte dar, die nicht gequotet werden.

Die Umgebungsvariable $REPAIR gibt bei den Befehlen Test und Shell an, ob während der bisherigen Skriptausführung Reparaturen durchgeführt wurden.

Am Ende des Skripts muss immer eine Leerzeile und ein Zeilenumbruch stehen, da die einzelnen Skripte später auseinandergenommen werden und bei Fehlen der Leerzeile und des Zeilenumbruches sonst nicht vorhersehbare Fehler entstehen können.

Metainformationen#

Metainformationen werden über spezielle Befehle hinterlegt. Hierbei muss beachtet werden, dass das Hinzufügen von Metainformationen automatisch dafür sorgt, dass ein Skript nicht länger wie ein Skript im Legacy-Format behandelt wird, d.h. es erhält numerische Vorgänger nicht mehr als Abhängigkeit, ohne dass diese explizit angegeben werden müssen.

Meta::Description <Text>

Fügt dem aktuellem Modul eine Beschreibung hinzu.

Meta::Description "Konfiguriert das Netzwerk des IServs"
Meta::After <<Modul>>

Spezifiziert, dass das aktuelle Modul nach den angegebenen Modulen ausgeführt werden muss. Der Befehl darf mehrfach genutzt werden. Dabei werden vorherige Einträge ergänzt, aber nicht überschrieben.

Meta::After "system" "network"
Meta::Before <<Modul>>

Komplementär von After.

Meta::Requires <<Modul>>

Spezifiziert, dass das aktuelle Modul nach den angegebenen Modulen ausgeführt werden muss und die Konfiguration dieser Module darf nicht fehlschlagen, da sonst dieses Modulskript nicht ausgeführt wird. Der Befehl darf mehrfach genutzt werden. Dabei werden vorherige Einträge ergänzt, aber nicht überschrieben.

Meta::Requires "postgresql"
Meta::RequiredBy <<Modul>>

Komplementär von Requires.

Befehle#

Check <<Files>>

Repariert die angegebenen Dateien mit iconf.

Check /etc/dhcpd.conf

Repariert die Konfigurationsdatei von dhcpd mit iconf.

Touch <<Files>>

Falls die Datei noch nicht existiert, wird sie leer erstellt.

Touch /etc/named.conf.local /var/named/{forward,reverse}.local.zone

Erstellt drei leere lokale Konfigurationsdateien für named, falls diese noch nicht existieren.

Link <Source> <Destination>

Erstellt einen Symlink auf die Zieldatei unter dem Namen der Quelldatei.

Link /opt/iserv/sbin/daily /etc/cron.daily/iserv

Erstellt einen Symlink, damit cron täglich ein Skript aufruft.

Remove <<Files>>

Löscht die angegebenen Dateien, nicht jedoch Verzeichnisse.

Remove /etc/sysconfig/iptables

Löscht die gespeicherte Konfiguration von iptables.

Remove-R <<Files>>

Löscht die angegebenen Dateien oder Verzeichnisse mit allen Unterverzeichnissen. Der Befehl kann nicht für Verzeichnisse der Hauptebene, wie z. B. /etc, aufgerufen werden.

Remove-R /usr/local/MailScanner

Löscht die alte MailScanner-Konfiguration mit allen Unterverzeichnissen.

Insert <File> <String>

Falls String noch nicht in der Datei vorkommt, wird er hinten als neue Zeile angefügt.

Insert /etc/httpd/conf/httpd.conf "Include /etc/httpd/conf/httpd.iserv.conf"

Bindet die IServ-Einstellungen in die Apache-Konfiguration ein.

ChPerm <Mode> <Owner> <<Files>>

Weist den Dateien die angegebenen Rechte und Besitzer zu. Mode muss in Oktalschreibweise angegeben werden, Owner hat das gleiche Format wie beim Linux-Befehl chown. Die Rechte und Besitzer werden nicht rekursiv auf die Inhalte eines Verzeichnisses angewendet.

ChPerm 0460 squid:admins /etc/squid/{allow,deny}.local

Gibt Squid Leserechte und den Mitgliedern der Gruppe Admins Vollzugriff auf die lokale Black- und Whitelist.

ChMod <Mode> <<Files>>

Weist den Dateien die angegebenen Rechte zu. Die Rechte werden nicht rekursiv auf die Inhalte eines Verzeichnisses angewendet.

ChMod 0640 /etc/shadow

Gibt dem Besitzer Vollzugriff und der Gruppe Leserechte auf die Shadow-Datei.

ChOwn <Owner> <<Files>>

Weist den Dateien den angegebenen Besitzer zu. Owner hat das gleiche Format wie beim Linux-Befehl chown. Die Besitzer werden nicht rekursiv auf die Inhalte eines Verzeichnisses angewendet.

ChOwn root:shadow /etc/shadow

Setzt den Besitzer und Gruppe der Shadow-Datei auf root und shadow.

MkDir <Mode> <Owner> <<Directories>>

Falls die Verzeichnisse noch nicht existieren, werden sie mit den angegebenen Rechten und dem Besitzer neu angelegt. Mode muss oktal angegeben werden, Owner hat das gleiche Format wie beim Linux-Befehl chown.

MkDir 0700 root:root /var/log/proftpd

Erstellt ein Verzeichnis für die Logdateien von ProFTPd, auf das nur root Zugriff hat.

Start <Unit> <<Processes>>

Der Dienst wird so konfiguriert, dass er beim nächsten Booten automatisch gestartet wird. Falls er nicht läuft oder nicht alle angegebenen Prozesse existieren, wird er über systemd gestartet. Danach wartet iservchk bis zu 30 Sekunden darauf, dass alle angegebenen Prozesse vorhanden sind. Falls kein Prozessname angegeben wird, überwacht iservchk den Start des Dienstes nicht. Die Angabe der Prozessnamen wird dringend empfohlen.

Falls bei der bisherigen Skriptausführung Reparaturen nötig geworden sind oder der Dienst veraltete Bibliotheken verwendet, wird der Dienst vorher gestoppt (siehe Befehl Stop).

Start cyrus-imapd cyrmaster imapd pop3d notifyd

Stellt sicher, dass der Dienst cyrus-imapd mit den Prozessen cyrmaster, imapd, pop3d und notifyd läuft und beim nächsten Booten automatisch gestartet wird. Falls nötig wird der Dienst neu gestartet.

Enable <Unit>

Der Dienst wird so konfiguriert, dass er beim nächsten Booten automatisch gestartet wird.

Enable iservchk.timer
Disable <Unit>

Der Dienst wird so konfiguriert, dass er beim nächsten Booten nicht mehr automatisch gestartet wird.

Disable iservchk.timer
Stop <Unit> <<Processes>>

Der Dienst wird so konfiguriert, dass er beim nächsten Booten nicht automatisch gestartet wird. Falls der Dienst läuft oder ein Prozess mit einem der angegebenen Namen existiert, wird der Dienst über systemd gestoppt. Falls das nicht hilft, versucht iservchk die Prozesse mit TERM- oder KILL-Signalen zu stoppen.

Stop iserv-display xinit chromium

Stellt sicher, dass der Dienst iserv-display mit den Prozessen xinit und chromium nicht läuft und beim nächsten Booten nicht automatisch gestartet wird.

Reload <Service> <<Processes>>

Der Dienst wird so konfiguriert, dass er beim nächsten Booten automatisch gestartet wird. Falls er nicht läuft oder nicht alle angegebenen Prozesse existieren, wird er über systemd gestartet. Danach wartet iservchk bis zu 30 Sekunden darauf, dass alle angegebenen Prozesse vorhanden sind. Falls kein Prozessname angegeben wird, überwacht iservchk den Start des Dienstes nicht. Die Angabe der Prozessnamen wird dringend empfohlen.

Falls bei der bisherigen Skriptausführung Reparaturen nötig geworden sind oder der Dienst veraltete Bibliotheken verwendet, wird der Dienst vorher neugeladen.

Reload apache2 apache2
Test <Name> [Test] --- [Repair]

Definiert ein Test- und ein Reparaturskript, jeweils als Shell-Skript ohne Quoting. Schlägt der Test bei der Ausführung fehl, wird das Reparaturskript ausgeführt und anschließend erneut getestet. Der erste Parameter gibt den Namen für den Test an, der bei Fehlern oder beim Aufruf von iservchk mit dem Parameter -v ausgegeben wird.

Test 'group Admins'
  grep -qi ^Admins: /etc/passwd
  ---
  iservgroupadd Admins

Dieser Test prüft, ob die Gruppe Admins existiert, indem er den passenden Eintrag in der Datei /etc/passwd sucht. Falls nicht, wird die Gruppe neu erstellt.

Test <Name> <Test> <Repair>

Alte Syntax des Test-Befehls (s. o.) mit gequoteten Parametern, nicht mehr empfohlen.

Shell <Name> [Skript]

Führt ein eingebettetes Shell-Skript aus.

Die Anweisungen, die hinter dem Befehl stehen, werden unverändert als Shell-Skript ausgeführt. Je nach Erfolg sollte das Skript einen entsprechenden Return-Code zurückgeben. Der Parameter Name gibt einen Namen für das Skript an, der bei Fehlern oder beim Aufruf von iservchk mit dem Parameter -v ausgegeben wird.

Shell "test Perl config"
  perl -cwT /var/iserv/config/config.pm 2>&1

Lässt perl die Syntax der Konfigurationsdatei von IServ prüfen.

Clean <<Directories>>

Räumt alle Dateien in dem angegebenem Verzeichnis auf, die aktuell nicht mehr von iservchk generiert werden, aber in der Vergangenheit angelegt wurden. Der Befehl kann nicht für Verzeichnisse der Hauptebene, wie z. B. /etc, aufgerufen werden.

Clean /etc/php/8.1/fpm/pool.d
Track <<Files>>

Weist iservchk an, die Datei in die Historie der generierten Dateien aufzunehmen. Der Einsatz dieses Befehls ist nur nötig, wenn die Datei nicht per Check oder Touch angelegt wurde.

Track /etc/php/8.1/fpm/pool.d/my-module.conf
Forget <<Files>>

Weist iservchk an, die Datei aus der Historie der generierten Dateien zu entfernen. Der Einsatz dieses Befehls ist nur nötig, wenn die Datei nicht per Remove oder Remove-R entfernt wurde. Der Befehl kann nicht für Verzeichnisse der Hauptebene, wie z. B. /etc, aufgerufen werden.

# <<Comment>>

Kommentar, der Rest des Befehls wird ignoriert.

# Jedes gelöste Problem ist einfach.

Dieses Zitat wird von iservchk ignoriert.