Systemd Baustein Systemdateien
Zur Navigation springen
Zur Suche springen
| Baustein | ab Stufe | Lernpfad |
|---|---|---|
| tmpfiles, sysctl, Module | Stufe 2 | Übersicht |
Einfach erklärt
- systemd erledigt beim Start einige Aufgaben, die früher Startskripte hatten. Gesteuert wird alles über kleine Textdateien in *.d-Verzeichnissen.
- tmpfiles.d: Verzeichnisse und Dateien anlegen, Rechte setzen, alte Dateien aufräumen.
- sysctl.d: Kernelparameter setzen, z.B. IP-Weiterleitung.
- modules-load.d: Kernelmodule beim Start laden.
- Überall gilt dieselbe Regel: Pakete legen ihre Dateien unter /usr/lib ab, eigene gehören nach /etc. Gleicher Dateiname in /etc gewinnt.
tmpfiles.d
- Typisch: Ein Dienst braucht unter /run ein Verzeichnis. /run ist nach jedem Neustart leer.
- /etc/tmpfiles.d/meindienst.conf
# Typ Pfad Rechte Benutzer Gruppe Alter d /run/meindienst 0750 www-data www-data - d /var/tmp/upload 1777 root root 7d
| Typ | Wirkung |
|---|---|
| d | Verzeichnis anlegen, mit Alter: alte Dateien darin löschen |
| D | wie d, aber der Inhalt wird bei jedem Start geleert |
| f | Datei anlegen, wenn sie fehlt |
| L | symbolischen Link anlegen |
| z | Rechte und Besitzer einer vorhandenen Datei setzen |
| r | Datei oder leeres Verzeichnis löschen |
- Sofort anwenden, ohne Neustart:
- systemd-tmpfiles --create /etc/tmpfiles.d/meindienst.conf
- Aufräumen nach Alter macht der Timer systemd-tmpfiles-clean.timer täglich.
- Für eigene Dienste geht es oft einfacher mit RuntimeDirectory=meindienst in der Unit. Dann legt systemd /run/meindienst beim Start an und löscht es beim Stopp.
sysctl.d
- Kernelparameter dauerhaft setzen, siehe auch Das /proc-Dateisystem.
- /etc/sysctl.d/90-router.conf
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1
- Sofort anwenden: sysctl --system
- Beim Start erledigt das systemd-sysctl.service.
- Debian 13 liest /etc/sysctl.conf nicht mehr. Eigene Einstellungen gehören nach /etc/sysctl.d/.
modules-load.d
- Module laden, die keine Hardware von selbst anstößt, siehe auch Kernel und Module.
- /etc/modules-load.d/bridge.conf
br_netfilter
- Beim Start erledigt das systemd-modules-load.service.
- Sofort: systemctl restart systemd-modules-load
Weitere Verzeichnisse dieser Art
| Verzeichnis | Wofür |
|---|---|
| /etc/systemd/system.conf.d/ | Einstellungen von systemd selbst, z.B. Standard-Timeouts |
| /etc/systemd/journald.conf.d/ | journald, siehe Systemd Baustein Journal |
| /etc/systemd/logind.conf.d/ | Anmeldung, z.B. was beim Zuklappen des Laptops passiert |
| /etc/binfmt.d/ | fremde Programmformate, z.B. ARM-Programme über qemu |
Stolperfallen
- Datei in /usr/lib geändert: Beim nächsten Update weg. Eigene Dateien nach /etc.
- Falsches Alter bei d: Mit 1d in /var/tmp werden Dateien gelöscht, die jemand noch braucht.
- sysctl.conf bearbeitet und nichts passiert: Debian 13 liest sie nicht mehr.
- Reihenfolge: Die Dateien werden alphabetisch gelesen, spätere überschreiben frühere. Deshalb Zahlen wie 90- vor den Namen.
Aufgaben
Grundaufgaben
- Legen Sie mit tmpfiles.d ein Verzeichnis /run/test an, das nach jedem Neustart wieder da ist.
- Schalten Sie per sysctl.d die IP-Weiterleitung dauerhaft ein und prüfen Sie es nach dem Neustart.
- Lassen Sie per modules-load.d das Modul br_netfilter beim Start laden.
Für Schnelle
- Ersetzen Sie die tmpfiles-Regel durch RuntimeDirectory= in einer eigenen Unit.
- Finden Sie heraus, welche tmpfiles-Regel bei Ihnen /tmp aufräumt: systemd-tmpfiles --cat-config | grep /tmp