BEZEICHNUNG
tmpfiles.d - Konfiguration für die Erstellung, Löschung und Bereinigung von flüchtigen und temporären DateienÜBERSICHT
/etc/tmpfiles.d/*.conf /run/tmpfiles.d/*.conf /usr/lib/tmpfiles.d/*.conf
~/.config/user-tmpfiles.d/*.conf $XDG_RUNTIME_DIR/user-tmpfiles.d/*.conf ~/.local/share/user-tmpfiles.d/*.conf … /usr/share/user-tmpfiles.d/*.conf
#Typ Pfad Modus Benutzer Gruppe Alter Argument f /Datei/zu/erstellen Modus Benutzer Gruppe - Inhalt f+ /Datei/zu/erstellen-oder-abzuschneiden Modus Benutzer Gruppe - Inhalt w /Datei/zu/hineinschreiben - - - - Inhalt w+ /Datei/zu/anzuhängen - - - - Inhalt d /Verzeichnis/zu/erstellen-und-aufzuräumen Modus Benutzer Gruppe Aufräumalter - D /Verzeichnis/zu/erstellen-und-entfernen Modus Benutzer Gruppe Aufräumalter - e /Verzeichnis/zu/aufzuräumen Modus Benutzer Gruppe Aufräumalter - v /Teildatenträger-oder-Verzeichnis/zu/erstellen Modus Benutzer Gruppe Aufräumalter - q /Teildatenträger-oder-Verzeichnis/zu/erstellen Modus Benutzer Grpppe Aufräumalter - Q /Teildatenträger-oder-Verzeichnis/zu/erstellen Modus Benutzer Gruppe Aufräumalter - p /FIFO/zu/erstellen Modus Benutzer Gruppe - - p+ /FIFO/(neu)zu/erstellen Modus Benutzer Gruppe - - L /Symlink/zu/erstellen - - - - Symlink/Ziel/Pfad L+ /Symlink/(neu)zu/erstellen - - - - Symlink/Ziel/Pfad c /dev/zeichenorientiertes-Gerät-zu-erstellen Modus Benutzer Gruppe - major:minor c+ /dev/zeichenorientiertes-Gerät-(neu)zu-erstellen Modus Benutzer Gruppe - major:minor b /dev/Blockgerät-zu-erstellen Modus Benutzer Gruppe - major:minor b+ /dev/Blockgerät-(neu)zu-erstellen Modus Benutzer Gruppe - major:minor C /Ziel/zu/erstellen - - - Aufräumalter /Quelle/zu/kopieren x /Pfad-oder-Glob/zu/ignorieren/rekursiv - - - Aufräumalter - X /Pfad-oder-Glob/zu/ignorieren - - - Aufräumalter - r /leeres/Verzeichnis/zu/entfernen - - - - - R /Verzeichnis/zu/entfernen/rekursiv - - - - - z /Pfad-oder-Glob/zu/anpassen/Modus Modus Benutzer Gruppe - - Z /Pfad-oder-Glob/zu/anpassen/Modus/rekursiv Modus Benutzer Gruppe - - t /Pfad-oder-Glob/zu/setzen/Xattrs - - - - Xattrs T /Pfad-oder-Glob/zu/setzen/Xattrs/rekursiv - - - - Xattrs h /Pfad-oder-Glob/zu/setzen/Attrs - - - - Datei-Attrs H /Pfad-oder-Glob/zu/setzen/Attrs/rekursiv - - - - Datei-Attrs a /Pfad-oder-Glob/zu/setzen/ACLs - - - - POSIX ACLs a+ /Pfad-oder-Glob/zu/anzuhängen/ACLs - - - - POSIX ACLs A /Pfad-oder-Glob/zu/setzen/ACLs/rekursiv - - - - POSIX ACLs A+ /Pfad-oder-Glob/zu/anzuhängen/ACLs/rekursiv - - - - POSIX ACLs
BESCHREIBUNG
tmpfiles.d-Konfigurationsdateien bieten einen generischen Mechanismus an, um die Erstellung regulärer Dateien, Verzeichnisse, Pipes und Geräteknoten, Anpassungen ihres Zugriffsmodus, ihrer Eigentümerschaft, Attribute, Kontingente, Zuweisungen und ihres Kontextes und schließlich ihrer zeitbasierten Entfernung zu definieren. Es wird am häufigsten für flüchtige und temporäre Dateien und Verzeichnisse benutzt (wie solchen, die sich unterhalb von /run/, /tmp/, /var/tmp/, den API-Dateisystemen wie /sys/ oder /proc/, sowie einigen anderen Verzeichnissen unterhalb von /var/ befinden). systemd-tmpfiles verwendet diese Konfiguration, um während des Systemstarts und nachfolgenden periodischen Bereinigungen flüchtige Dateien und Verzeichnisse zu erstellen. Siehe systemd-tmpfiles(8) für eine Beschreibung von systemd-tmpfiles-setup.service, systemd-tmpfiles-clean.service und zugehörigen Units. System-Daemons benötigen häufig private Laufzeitverzeichnisse unterhalb von /run/, um Kommunikations-Sockets und ähnliches abzuspeichern. Dafür sollte besser RuntimeDirectory= in ihren Unit-Dateien verwandt werden (siehe systemd.exec(5) für Details), falls die durch tmpfiles.d bereitgestellte Flexibilität nicht benötigt wird. Der Vorteil ist, dass die durch die Unit benötigte Konfiguration an einer Stelle zentralisiert ist und dass die Lebensdauer des Verzeichnisses an die Lebensdauer des Dienstes selbst gekoppelt ist. Ähnlich sollten StateDirectory=, CacheDirectory=, LogsDirectory= und ConfigurationDirectory= zur Erstellung von Verzeichnisse unterhalb von /var/lib/, /var/cache/, /var/log/ und /etc/ verwandt werden. tmpfiles.d sollte für Dateien verwandt werden, deren Lebensdauer unabhängig von irgendeinem Dienst ist oder die kompliziertere Konfiguration benötigen.KONFIGURATIONSVERZEICHNISSE UND RANGFOLGE
Jede Konfigurationsdatei muss in der Art Paket.conf oder Paket-Teil.conf benannt werden. Die zweite Variante sollte genutzt werden, wenn es wünschenswert ist, es leicht zu machen, nur diesen Teil der Konfiguration außer Kraft zu setzen. Dateien in /etc/tmpfiles.d setzen Dateien mit dem gleichen Namen in /usr/lib/tmpfiles.d und /run/tmpfiles.d außer Kraft. Dateien in /run/tmpfiles.d setzen Dateien mit dem gleichen Namen in /usr/lib/tmpfiles.d außer Kraft. Pakete sollten ihre Konfigurationsdateien in /usr/lib/tmpfiles.d installieren. Dateien in /etc/tmpfiles.d sind für den lokalen Administrator reserviert, der diese Logik dazu verwenden kann, um vom Lieferanten installierte Pakete außer Kraft zu setzen. Alle Konfigurationsdateien werden in lexikographischer Reihenfolge nach ihrem Dateinamen sortiert, unabhängig davon, in welchem der Verzeichnisse sie sich befinden. Falls mehrere Dateien den gleichen Pfad festlegen, wird der Eintrag in der Datei mit dem lexikographisch kleinsten Namen angewandt. (Beachten Sie, dass aufgrund »!« unterdrückte Zeilen vor jeder Anwendung gefiltert werden, was bedeutet, dass eine spätere Zeile, die auf einen Pfad passt, angewandt wird, falls eine frührere Zeile das Ausrufezeichen trägt und daher unterdrückt wird.) Alle anderen im Konflikt stehenden Einträge werden als Fehler protokolliert. Wenn zwei Zeilen Präfix- und Suffixpfad von dem jeweils anderen sind, wird das Präfix zuerst, das Suffix später erstellt (und falls das Entfernen für die Zeile gilt, ist die Reihenfolge umgedreht: das Suffix wird zuerst entfernt, das Präfix später). Zeilen, die Globs akzeptieren werden nach solchen, die keine Globs akzeptieren, verarbeitet. Falls mehrere Aktionen auf die gleiche Datei angewandt werden sollen (wie ACL, Xattr, Dateiatributsanpassungen), werden diese immer in der gleichen festen Reihenfolge vorgenommen. Außer für diese Fälle werden die Dateien/Verzeichnisse in der Reihenfolge verarbeitet, in der sie aufgeführt sind. Falls der Administrator eine vom Lieferanten bereitgestellte Konfigurationsdatei außer Kraft setzen möchte, wird empfohlen, einen Symlink auf /dev/null in /etc/tmpfiles.d/, der den gleichen Dateinamen trägt, anzulegen.KONFIGURATIONSDATEIFORMAT
Das Konfigurationsformat ist eine Zeile pro Pfad und enthält Typ-, Pfad-, Modus-, Eigentümerschaft-, Alter- und Argumentfelder. Die Zeilen werden durch Zeilenumbrüche, die Felder durch Leerraumzeichen getrennt:#Typ Pfad Modus Benutzer Gruppe Alter Argument… d /run/user 0755 root root 10d - L /tmp/foobar - - - - /dev/null
Typ
Der Typ besteht aus einem einzelnen Buchstaben und optional einem oder mehreren Modifikatorzeichen: einem Plus-Zeichen (»+«), Ausrufezeichen (»!«), Minuszeichen (»-«), Gleichheitszeichen (»=«), Tildezeichen (»~«) und/oder Zirkumflex (»^«). Die folgenden Zeilentypen werden verstanden: f, f+
f erstellt eine Datei, falls sie noch
nicht existiert. Falls der Argumentparameter angegeben ist und die Datei noch
nicht existierte, wird er in die Datei geschrieben. f+ erstellt eine
Datei oder schneidet sie ab. Falls der Argumentparameter angegeben ist, wird
er in die Datei geschrieben. Folgt keinen Symlinks.
w, w+
Schreibt den Argumentparameter in eine Datei,
falls die Datei existiert. Falls ein + angehängt ist, wird die
Zeile an die Datei angehängt. Falls Ihre Konfiguration mehrere Zeilen
in die gleiche Datei schreibt, verwenden Sie w+. Zeilen dieses Typs
akzeptieren Shell-artige Globs anstelle von normalen Pfadnamen. Der
Argumentparameter wird ohne abschließenden Zeilenumbruch geschrieben.
C-artige Rückwärtsschrägstrichmaskierungen werden
interpretiert. Folgt Symlinks.
d
Erstellt ein Verzeichnis. Der Modus und die
Eigentümerschaft werden angepasst, falls angegeben. Inhalte dieses
Verzeichnisses unterliegen einer zeitbasierten Bereinigung, falls das Argument
»Alter« festgelegt ist.
D
Ähnlich zu d, aber
zusätzlich werden die Inhalte des Verzeichnisses entfernt, wenn
--remove verwandt wird.
e
Passt den Modus und die
Eigentümerschaft eines bestehenden Verzeichnisses an und entfernt
altersbasiert die Inhalte darin. Zeilen von diesem Typ akzeptieren
Shell-artige Globs anstelle von normalen Pfadnamen. Inhalte dieser
Verzeichnisse unterliegen zeitbasierter Bereinigung, falls das Argument
»Alter« festgelegt ist. Falls das Argument »Alter«
»0« ist, werden die Inhalte bei jedem Aufruf von
systemd-tmpfiles --clean bedingungslos gelöscht.
Damit dieser Eintrag nützlich ist, muss mindestens eines der Argumente
Modus, Benutzer, Gruppe oder Alter festgelegt sein, da andernfalls dieser
Eintrag keinen Effekt hat. Als Ausnahme kann ein Eintrag ohne Effekt bei der
Kombination mit ! nützlich sein, siehe Beispiele.
v
Erstellt einen Teildatenträger, falls
der Pfad noch nicht existiert, das Dateisystem Teildatenträger
unterstützt (Btrfs) und das System selbst in einen
Teildatenträger installiert ist (konkret: das Wurzelverzeichnis / ist
selbst ein Teildatenträger). Andernfalls wird wie bei d ein
normales Verzeichnis erstellt.
Ein mit diesem Zeilentyp erstellter Teildatenträger wird keiner
abstrakteren Kontingentgruppe zugeordnet. Verwenden Sie dafür q
oder Q, die die Erstellung einfacher Kontingentgruppenhierarchien
erlauben, siehe unten.
q
Erstellt wie bei v einen
Teildatenträger oder Verzeichnis, weist den Teildatenträger aber
der gleichen abstrakteren Kontingentgruppe wie dem
Eltern-Teildatenträger zu. Dies stellt sicher, dass abstraktere
Begrenzungen und Buchführungen auf den Eltern-Teildatenträger
auch den angegebenen Teildatenträger einschließen. Auf von Btrfs
verschiedenen Dateisystemen ist diese Zeile zu d identisch.
Falls der Teildatenträger bereits existiert, erfolgen an der
Kontingenthierarchie keine Änderungen, unabhängig davon, ob der
Teildatenträger bereits an die Kontingentgruppe angehängt ist.
Siehe auch Q unten. Siehe btrfs-qgroup(8) für Details
über das Btrfs-Kontingentgruppenkonzept.
Q
Erstellt wie bei v einen
Teildatenträger oder ein Verzeichnis, weist dem neuen
Teildatenträger eine neue Blatt-Kontingentgruppe zu. Statt wie bei
q die abstraktere Kontingentgruppenzuweisung vom
Eltern-Teildatenträger zu kopieren, wird die niedrigste
Kontingentgruppe des Eltern-Teildatenträgers bestimmt, die nicht in der
Blatt-Kontingentgruppe ist. Dann wird eine
»Zwischen«-Kontingentgruppe eingefügt, die eine Stufe
unterhalb dieser Stufe ist und sich den Kennungsteil mit dem angegebenen
Teildatenträger teilt. Falls keine abstraktere Kontingentgruppe
für den Eltern-Teildatenträger existiert, wird stattdessen eine
neue Kontingentgruppe auf Stufe 255 eingefügt, die die gleiche Kennung
wie der angegebene Teildatenträger hat. Diese neue
Zwischenkontingentgruppe wird dann der abstrakten Kontingentgruppe des
Eltern-Teildatenträgers zugewiesen und die festgelegte
Blatt-Kontingentgruppe des Teildatenträgers wird dieser zugewiesen.
Effektiv hat dies eine ähnliche Wirkung wie q, führt
allerdings eine neue abstrakte Kontingentgruppe für den angegebenen
Teildatenträger ein, die zum Durchsetzen von Begrenzungen und
Buchführungen für den angegebenen Teildatenträger und
innerhalb darin erstellter Kinder-Teildatenträger verwandt werden kann.
Werden daher Teildatenträger nur mittels q und Q
erstellt, wird ein »Unterbaumkontingente«-Konzept implementiert.
Für jeden Teildatenträger, für das Q gesetzt ist,
wird eine »Unterbaum«-Kontingentgruppe erstellt und alle darin
erstellten Kinder-Teildatenträger werden ihr zugewiesen. Jeder
Teildatenträger, für den q gesetzt ist, wird keine solche
»Unterbaum«-Kontingentgruppe erhalten, aber es wird
sichergestellt, dass er zu der gleichen
»Unterbaum«-Kontingentgruppe wie sein direkter
Eltern-Teildatenträger zugewiesen wird.
Es wird empfohlen, Q für Teildatenträger zu verwenden, die
typischerweise weitere Teildatenträger enthalten und bei denen es
wünschenswert ist, Buchführung und Kontingentbegrenzungen auf
allen Kind-Teildatenträger zusammen zu haben. Beispiele für
Q sind typischerweise /home/ oder /var/lib/machines/. q sollte
dagegen für Teildatenträger verwandt werden, die entweder
normalerweise keine weiteren Teildatenträger enthalten oder bei denen
keine Buchführung und Kontingentbegrenzungen benötigt werden,
die auf alle Kind-Teildatenträger zusammen angewandt werden sollen.
Beispiele für q sind typischerweise /var/ oder /var/tmp/.
Wie mit q hat Q keine Wirkung auf die Kontingentgruppenhierarchie,
falls der Teildatenträger bereits existiert, unabhängig davon,
ob der Teildatenträger bereits zu der Kontingentgruppe
gehört.
p, p+
Erstellt eine benannte Pipe (FIFO), falls sie
noch nicht existiert. Falls + angehängt ist und eine Datei
bereits existiert, wo die Pipe erstellt werden soll, wird sie entfernt und
durch die Pipe ersetzt.
L, L+
Erstellt einen Symlink, falls er noch nicht
existiert. Falls + angehängt ist und eine Datei bereits
existiert, wo der Symlink erstellt werden soll, wird sie entfernt und durch
den Symlink ersetzt. Falls das Argument nicht angegeben wird werden Symlinks
auf Dateien mit dem gleichen Namen, die in /usr/share/factory/ liegen,
erstellt. Beachten Sie, dass Berechtigungen und Eigentümerschaften bei
Symlinks ignoriert werden.
c, c+
Erstellt einen Zeichengeräteknoten,
falls er noch nicht existiert. Falls + angehängt ist und eine
Datei bereits existiert, wo der Geräteknoten erstellt werden soll, wird
sie entfernt und durch den Geräteknoten ersetzt. Es wird empfohlen, an
diesen Eintrag ein Ausrufezeichen anzuhängen, um statische
Geräteknoten nur beim Systemstart zu erstellen, da Udev keine
statischen Geräteknoten verwalten wird, die zur Laufzeit erstellt
wurden.
b, b+
Erstellt einen Blockgeräteknoten, falls
er noch nicht existiert. Falls + angehängt ist und eine Datei
bereits existiert, wo der Geräteknoten erstellt werden soll, wird sie
entfernt und durch den Geräteknoten ersetzt. Es wird empfohlen, an
diesen Eintrag ein Ausrufezeichen anzuhängen, um statische
Geräteknoten nur beim Systemstart zu erstellen, da Udev keine
statischen Geräteknoten verwalten wird, die zur Laufzeit erstellt
wurden.
C
Kopiert eine Datei oder ein Verzeichnis
rekursiv, falls die Zieldateien oder -verzeichnisse noch nicht existieren oder
das Zielverzeichnis leer ist. Beachten Sie, dass dieser Befehl nicht in
Unterverzeichnisse absteigen wird, falls das Zielverzeichnis bereits existiert
und nicht leer ist. Stattdessen wird die gesamte Kopieraktion
übersprungen. Falls das Argument weggelassen wird, werden Dateien aus
dem Quellverzeichnis /usr/share/factory/ mit dem gleichen Namen kopiert. Folgt
keinen Symlinks. Die Inhalte der Verzeichnisse unterliegen zeitbasierten
Bereinigungen, falls das Alter-Argument festgelegt wurde.
x
Ignoriert während der Bereinigung einen
Pfad. Verwenden Sie diesen Typ, um Pfade von der Reinigung, wie sie mit dem
Parameter Age gesteuert wird, auszuschließen. Beachten Sie, dass Zeilen
von diesem Typ nicht den Effekt von r- und R-Zeilen
beeinflussen. Zeilen von diesem Typ akzeptieren Shell-artige Globs anstelle
von normalen Pfadnamen.
X
Ignoriert während der Bereinigung einen
Pfad. Verwenden Sie diesen Typ, um Pfade von der Reinigung, wie sie mit dem
Parameter Age gesteuert wird, auszuschließen. Anders als x wird
der Parameter keinen Inhalt ausschließen, falls Pfad ein Verzeichnis
ist, sondern nur Verzeichnisse selbst. Beachten Sie, dass Zeilen von diesem
Typ nicht den Effekt von r- und R-Zeilen beeinflussen. Zeilen
von diesem Typ akzeptieren Shell-artige Globs anstelle von normalen
Pfadnamen.
r
Entfernt eine Datei oder ein Verzeichnis,
falls sie/es bereits existiert. Dies kann nur zur Entfernung leerer
Verzeichnisse verwandt werden, verwenden Sie andernfalls R. Zeilen von
diesem Typ akzeptieren Shell-artige Globs anstelle von normalen Pfadnamen.
Folgt keinen Symlinks.
R
Entfernt einen Pfad und alle seine
Unterverzeichnisse (falls es ein Verzeichnis ist) rekursiv. Zeilen von diesem
Typ akzeptieren Shell-artige Globs anstelle von normalen Pfadnamen. Folgt
keinen Symlinks.
z
Passt den Zugriffsmodus, die Benutzer- und
Gruppeneigentümerschaft an und stellt den SELinux-Sicherheitskontext
einer Datei oder eines Verzeichnisses, falls sie/es existiert, wieder her.
Zeilen von diesem Typ akzeptieren Shell-artige Globs anstelle von normalen
Pfadnamen. Folgt keinen Symlinks.
Z
Setzt rekursiv den Zugriffsmodus, die
Benutzer- und Gruppeneigentümerschaft und stellt den
SELinux-Sicherheitskontext einer Datei oder eines Verzeichnisses, falls sie/es
existiert, sowie, falls zutreffend, seiner Unterverzeichnisse und der darin
enthaltenen Dateien, wieder her. Zeilen von diesem Typ akzeptieren
Shell-artige Globs anstelle von normalen Pfadnamen. Folgt keinen
Symlinks.
t
Setzt erweiterte Attribute, siehe
attr(5) für Details. Das Argumentenfeld sollte eine oder mehrere
Zuweisungen in der Form Namensraum.Attribut=Wert
akzeptieren, Beispiele finden Sie weiter unten. Zeilen von diesem Typ
akzeptieren Shell-artige Globs anstelle von normalen Pfadnamen. Dies kann zum
Setzen von SMACK-Label nützlich sein. Folgt keinen Symlinks.
Bitte beachten Sie, dass erweiterte Attribute, die mit diesem Zeilentyp setzbar
sind, ein anderes Konzept als die mit h/H setzbaren
Linux-Dateiattribute sind, siehe unten.
T
Identisch zu t, arbeitet aber
rekursiv.
h
Setzt Linux-Datei-/Verzeichnisattribute.
Zeilen von diesem Typ akzeptieren Shell-artige Globs anstelle von normalen
Pfadnamen.
Das Format des Argumentenfelds lautet [+-=][aAcCdDeijPsStTu]. Das
Präfix + (die Vorgabe) führt dazu, dass die Attribute
hinzugfügt werden, - führt dazu, dass die Attribute
entfernt werden, = führt dazu, dass die Attribute genau auf die
nachfolgenden Buchstaben gesetzt werden. Die Buchstaben
»aAcCdDeijPsStTu« wählen die neuen Attribute für
die Dateien aus, siehe chattr(1) für weitere Informationen.
Wird nur = übergeben, werden alle oben aufgeführten
Dateiattribute zurückgesetzt. Es muss daraufhingewiesen werden, dass
sich das Präfix = auf die Attribute beschränkt, die den
hier aufgeführten Buchstaben entsprechen. Alle weiteren Attribute
bleiben unverändert. Folgt keinen Symlinks.
Bitte beachten Sie, dass die Linux-Datei-Attribute, die mit diesem Zeilentyp
setzbar sind, ein anderes Konzept als die mit t/T setzbaren
erweiterten Attribute sind, siehe oben.
H
Identisch zu h, arbeitet aber
rekursiv.
a, a+
Setzt POSIX ACLs (Zugriffsteuerungslisten),
siehe acl(5). Falls + vorangestellt wird, werden die angegebenen
Einträge zu der bestehenden Menge hinzugefügt.
systemd-tmpfiles wird automatisch die benötigten
Basiseinträge für Benutzer und Gruppen basierend auf dem
Zugriffsmodus der Datei hinzufügen, außer die
Basiseinträge existieren bereits oder werden explizit festgelegt. Die
Maske wird hinzugefügt, falls sie nicht explizit festgelegt oder
bereits vorhanden ist. Zeilen von diesem Typ akzeptieren Shell-artige Globs
anstelle von normalen Pfadnamen. Dies kann zum Erlauben von
zusätzlichen Zugriffen auf bestimmte Dateien nützlich sein.
Folgt keinen Symlinks.
A, A+
Identisch zu a und a+, aber
rekursiv. Folgt keinen Symlinks.
Typmodifikatoren:
Falls das Ausrufezeichen (»!«) verwandt wird, ist diese Zeile nur bei der Ausführung während des Systemstarts sicher und kann ein laufendes System beschädigen. Bei Zeilen ohne Ausrufezeichen wird angenommen, dass ihr Aufruf jederzeit sicher ist, z.B. bei Paket-Upgrades. systemd-tmpfiles wird Zeilen mit einem Ausrufezeichen nur in Betracht ziehen, falls die Option --boot angegeben ist. Beispiel:# Sicherstellen, dass diese standardmäßig erstellt werden, so dass es # kein anderer machen kann d /tmp/.X11-unix 1777 root root 10d # Lösen des X11-Sperrdatei-Links r! /tmp/.X[0-9]*-lock
# Verändert sysfs, aber schlägt nicht fehl, falls es sich in einem Container mit schreibgeschütztem /proc befindet w- /proc/sys/vm/swappiness - - - - 10
Pfad
Die Dateisystempfadangabe unterstützt einfache Kennzeichnererweiterungen, siehe unten. Der Pfad muss (nach Erweiterung) absolut sein.Modus
Der bei der Erstellung der Datei oder des Verzeichnisses zu verwendende Dateizugriffsmodus. Falls weggelassen oder auf »-« gesetzt, wird die Vorgabe benutzt: 0755 für Verzeichnisse, 0644 für alle anderen Dateiobjekte. Für z-, Z-Zeilen, weggelassen oder auf »-« gesetzt, wird der Dateizugriffsmodus nicht verändert. Dieser Parameter wird für x-, r-, R-, L-, t- und a-Zeilen ignoriert. Falls optional »~« vorangestellt wird, wird der Zugriffsmodus basierend auf Zugriffsbits von bereits bestehenden Dateien oder Verzeichnissen maskiert: falls die bestehende Datei alle Ausführ-Bits nicht gesetzt hat, werden auch alle Ausführ-Bits von dem neuen Zugriffsmodus entfernt. Ähnlicherweise werden alle Lese-Bits auch von dem neuen Zugriffsmodus entfernt, falls alle Lese-Bits von dem alten Zugriffsmodus entfernt sind und falls alle Schreib-Bits entfernt wurden, werden sie auch von dem neuen Zugriffsmodus entfernt. Zusätzlich wird auch das Bit sticky/SUID/SGID entfernt, außer es wird auf ein Verzeichnis angewandt. Diese Funktionalität ist insbesondere im Zusammenspiel mit Z nützlich. Falls dem konfigurierten Zugriffsmodus optional ein »:« vorangestellt wird, wird dieser nur bei der Erstellung neuer Inodes verwandt. Falls der Inode, auf den sich die Zeile bezieht, bereits existiert, dann verbleibt dessen Zugriffsmodus unverändert.Benutzer, Gruppe
Die für diese Datei oder dieses Verzeichnis zu verwendenden Benutzer und Gruppe. Dies kann entweder eine numerische Kennung oder ein Benutzer- oder Gruppenname sein. Falls weggelassen oder auf »-« gesetzt, wird der Benutzer und die Gruppe des Benutzers, der systemd-tmpfiles aufgerufen hat, verwandt. Für z- und Z-Zeilen, falls weggelassen oder auf »-« gesetzt, wird die Dateieigentümerschaft nicht geändert. Diese Parameter werden für x-, r-, R-, L-, t- und a-Zeilen ignoriert. Dieses Feld sollte im Allgemeinen nur Systembenutzer/-gruppen, d.h. Benutzer/Gruppen, die während des frühen Systemstarts garantiert aufgelöst werden können, referenzieren. Falls dieses Feld Benutzer/Gruppen referenziert, die erst während des späteren Systemstarts auflösbar werden (d.h. nachdem NIS, LDAP oder ähnliche netzbasierte Verzeichnisdienste verfügbar werden), wird die Ausführung von Aktionen, die durch diese Zeile festgelegt werden, wahrscheinlich fehlschlagen. Siehe auch Hinweise zur Auflösbarkeit von Benutzer- und Gruppennamen[3] für weitere Informationen über die Anforderungen an die Definition von Systembenutzer/-gruppen. Falls der konfigurierten Benutzer-/Gruppeinformation optional ein »:« vorangestellt wird, wird diese nur bei der Erstellung neuer Inodes verwandt. Falls der Inode, auf den sich die Zeile bezieht, bereits existiert, dann verbleibt der Benutzer/die Gruppe unverändert.Alter
Das Datumsfeld, falls gesetzt, wird zur Entscheidung, welche Dateien beim Bereinigen gelöscht werden sollen, verwandt. Falls eine Datei oder ein Verzeichnis älter als die aktuelle Zeit minus des Feldes »Alter« ist, wird sie gelöscht. Das Feldformat ist eine Serie von Ganzzahlen, an die eine der nachfolgenden entsprechenden Zeiteinheiten angehängt ist: s (Sekunden), m oder min (Minuten), h (Stunden), d (Tage), w (Wochen), ms (Millisekunden) und us (Mikrosekunden). Es können auch die ausgeschriebenen englischen Namen verwandt werden. Falls mehrere Ganzzahlen und Einheiten festgelegt werden, werden die Zeitwerte aufsummiert. Falls eine Ganzzahl ohne Einheit angegeben wird, wird s angenommen. Wird das Alter auf Null gesetzt, werden die Dateien bedingungslos bereinigt. Das Feld »Alter« wird nur auf Zeilen, die mit d, D, e, v, q, Q, C, x und X beginnen, angewandt. Falls weggelassen oder auf »-« gesetzt, erfolgt keine automatische Bereinigung. Falls das Feld »Alter« mit einem Tildezeichen »~« beginnt, erfolgt die Bereinigung nur auf Dateien und Verzeichnisse eine Stufe innerhalb des festgelegten Verzeichnisses, aber nicht auf Dateien und Verzeichnisse direkt innerhalb davon. Das Alter des Dateisystemeintrags wird von seinem letzten Änderungszeitstempel (mtime), seinem letzten Zugriffszeitstempel (atime) und (außer für Verzeichnisse) seinem letzten Statusänderungszeitstempel (ctime) bestimmt. Standardmäßig wird jeder der drei (oder zwei) Werte die Bereinigung verhindern, falls er neuer als die aktuelle Zeit minus des Feldes »Alter« ist. Um die Löschung basierend auf einer bestimmten Art von Dateistempel einzuschränken, kann das Argument »Alterungsdauer« verwandt werden. Das Argument »Alterungsdauer« setzt die Zeitstempeltypen, die für die Altersüberprüfung verwandt werden, außer Kraft. Es kann angegeben werden, indem dem Alter-Argument eine Reihe von Zeichen, zur Angabe des Zeitstempeltyps, und ein Doppelpunkt (»:«) vorangestellt werden: » Alterungsdauer…:I Bereinigungszeit«. Das Argument kann aus a ( A für Verzeichnisse), b (B für Verzeichnisse), c (C für Verzeichnisse) oder m (M für Verzeichnisse) bestehen. Diese geben Zugriff, Erstellung, letzte Statusänderung bzw. letzte Veränderungszeit eines Dateisystemeintrags an. Der Kleinbuchstabe gibt an, dass der übergebene Zeitstempeltyp für Dateien betrachtet werden soll, während der Großbuchstabe angibt, dass der übergebene Zeitstempeltyp für Verzeichnisse betrachtet werden soll. Siehe statx(2) Dateistempelfelder (file stamp types) für weitere Details über Zeitstempeltypen. Falls nicht angegeben, ist die Vorgabe für das Feld »Alterungsdauer« abcmABM, d.h. standardmäßig werden alle Datei-Zeitstempelfelder berücksichtigt mit der Ausnahme des Zeitstempels der letzten Statusänderung (ctime) bei Verzeichnissen. Dies erfolgt, da die Alterungslogik selbst die Ctime ändert, immer wenn sie eine Datei darin löscht. Um sicherzustellen, dass die laufende Alterungslogik nicht beim nächsten Durchlauf in sich selbst rückkoppelt, wird standardmäßig die ctime für Verzeichnisse ignoriert. Beispiel:# Dateien, die vor mehr als einer Stunde erstellt und verändert bzw. # Verzeichnisse, auf die vor mehr als einer Stunde in »/tmp/foo/bar« # zugegriffen wurden unterliegen der zeitbasierten Bereinigung. d /tmp/foo/bar - - - - bmA:1h -
Argument
Für L-Zeilen bestimmt es den Zielpfad des Symlinks. Für c und b-Zeilen bestimmt es den Major/Minor des Geräteknotens, wobei Major und Minor als Ganzzahlen getrennt durch »:« formatiert sind, z.B. »1:3«. Für f, F und w kann das Argument zur Angabe einer kurzen Zeichenkette, die in eine Datei (abgeschlossen durch einen Zeilenumbruch) geschrieben wird, verwandt werden. Für C legt es die Quelldatei oder das Quellverzeichnis fest. Für t und T bestimmt es die zu setzenden erweiterten Attribute. Für a und A bestimmt es die zu setzenden ACL-Attribute. Für h und H bestimmt es die zu setzenden Dateiattribute. Für alle anderen Zeilen ignoriert. Dieses Feld kann Kennzeichner enthalten, siehe unten.KENNZEICHNER
Kennzeichner können in den Feldern »Pfad« und »Argument« verwandt werden. Ein unbekannter oder unauflösbarer Kennzeichner wird als ungültige Konfiguration behandelt. Die folgenden Erweiterungen werden verstanden:Kennzeichner | Bedeutung | Details |
"%a" | Architektur | Eine kurze Zeichenkette, die die Architektur des lokalen Systems identifiziert. Eine Zeichenkette wie x86, x86-64 oder arm64. Siehe die für ConditionArchitecture= in systemd.unit(5) definierten Architekturen für die vollständige Liste. |
"%A" | Betriebssystemabbildversion | Die Betriebssystemabbildversionskennzeichnung des laufenden Systems, wie aus dem Feld IMAGE_VERSION= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es die leere Zeichenkette. Siehe os-release(5) für weitere Informationen. |
"%b" | Boot-Kennung | Die Boot-Kennung des laufenden Systems, formatiert als Zeichenkette. Siehe random(4) für weitere Informationen. |
"%B" | Betriebssystembaukennung | Die Betriebssystembaukennung des laufenden Systems, wie aus dem Feld BUILD_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es zur leeren Zeichenkette aufgelöst. Siehe os-release(5) für weitere Informationen. |
"%C" | System- oder Benutzerzwischenspeicherverzeichnis | Im Modus --user ist dies identisch zu $XDG_CACHE_HOME, andernfalls /var/cache. |
"%g" | Benutzergruppe | Dies ist der Name der Gruppe, die den Befehl ausführt. Im Falle der Systeminstanz löst sich dies auf »root« auf. |
"%G" | Benutzer-GID | Dies ist die numerische GID der Gruppe, die den Befehl ausführt. Im Falle der Systeminstanz löst sich dies auf 0 auf. |
"%h" | Benutzer-Home-Verzeichnis. | Dies ist das Home-Verzeichnis des Benutzers, der den Befehl ausführt. Im Falle der Systeminstanz löst sich dies auf »/root« auf. |
"%H" | Rechnername | Der Rechnername des laufenden Systems. |
"%l" | Kurzer Rechnername | Die Rechnername des laufenden Systems, abgeschnitten am ersten Punkt, um alle Domain-Komponenten zu entfernen. |
"%L" | System- oder Benutzerprotokollierverzeichnis | Im Modus --user ist dies identisch zu $XDG_CONFIG_HOME mit angehängtem /log, andernfalls /var/log. |
"%m" | Maschinenkennung | Die Maschinenkennung des laufenden Systems, formatiert als Zeichenkette. Siehe machine-id(5) für weitere Informationen. |
"%M" | Betriebssystemabbildkennung | Die Betriebssystemabbildkennung des laufenden Systems, wie aus dem Feld IMAGE_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es die leere Zeichenkette. Siehe os-release(5) für weitere Informationen. |
"%o" | Betriebssystemkennung | Die Betriebssystemkennung des laufenden Systems, wie aus dem Feld ID= in /etc/os-release ausgelesen. Siehe os-release(5) für weitere Informationen. |
"%S" | System- oder Benutzerzustandsverzeichnis | Im Modus --user ist dies identisch zu $XDG_CONFIG_HOME, andernfalls /var/lib. |
"%t" | System- oder Benutzerlaufzeitverzeichnis | Im Modus --user ist dies identisch zu $XDG_RUNTIME_DIR, andernfalls /run/. |
"%T" | Verzeichnis für temporäre Dateien | Dies ist entweder /tmp oder der Pfad, auf den »$TMPDIR«, »$TEMP« oder »$TMP« gesetzt ist. (Beachten Sie, dass das Verzeichnis ohne abschließenden Schrägstrich angegeben werden kann.) |
"%u" | Benutzername | Dies ist der Name des Benutzers, der den Befehl ausführt. Im Falle der Systeminstanz löst sich dies auf »root« auf. |
"%U" | Benutzer-UID | Dies ist die numerische UID des Benutzers, der den Befehl ausführt. Im Falle der Systeminstanz löst sich dies auf 0 auf. |
"%v" | Kernelveröffentlichung | Identisch zur Ausgabe von uname -r. |
"%V" | Verzeichnis für größere und dauerhafte temporäre Dateien | Dies ist entweder /var/tmp oder der Pfad, auf den »$TMPDIR«, »$TEMP« oder »$TMP« gesetzt ist. (Beachten Sie, dass das Verzeichnis ohne abschließenden Schrägstrich angegeben werden kann.) |
"%w" | Betriebssystemversionskennung | Die Betriebssystemversionskennzeichnung des laufenden Systems, wie aus dem Feld VERSION_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es die leere Zeichenkette. Siehe os-release(5) für weitere Informationen. |
"%W" | Betriebssystemvariantenkennung | Die Betriebssystemvariantenkennung des laufenden Systems, wie aus dem Feld VARIANT_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es die leere Zeichenkette. Siehe os-release(5) für weitere Informationen. |
"%%" | Einzelnes Prozentzeichen | Verwenden Sie »%%« anstelle von »%«, um ein einzelnes Prozentzeichen anzugeben. |
BEISPIELE
Beispiel 1. Erstellt Verzeichnisse mit festgelegtem Modus und Eigentümerschaft screen(1) benötigt beim Systemstart zwei Verzeichnisse mit bestimmten Modi und Eigentümerschaften:# /usr/lib/tmpfiles.d/screen.conf d /run/screens 1777 root screen 10d d /run/uscreens 0755 root screen 10d12h
D /run/cups - - - - t /run/cups - - - - security.SMACK64=printing user.attr-with-spaces="foo bar"
# /usr/lib/tmpfiles.d/tmp.conf d /var/tmp 1777 root root 30d
# /usr/lib/tmpfiles.d/abrt.conf d /var/tmp/abrt 0755 abrt abrt -
# /usr/lib/tmpfiles.d/dnf.conf r! /var/cache/dnf/*/*/download_lock.pid r! /var/cache/dnf/*/*/metadata_lock.pid r! /var/lib/dnf/rpmdb_lock.pid e /var/cache/dnf/ - - - 30d
# /usr/lib/tmpfiles.d/krb5rcache.conf e! /var/cache/krb5rcache - - - 0
-smbios type=11,value=io.systemd.credential.binary:tmpfiles.extra=$(echo "f~ /root/.ssh/authorized_keys 700 root root - $(ssh-add -L | base64 -w 0)" | base64 -w 0)
/RUN/ UND /VAR/RUN/
/var/run/ ist ein veralteter Symlink auf /run/ und Anwendungen sollten Letzteres verwenden. systemd-tmpfiles wird bei der Verwendung von /var/run warnen.SIEHE AUCH
systemd(1), systemd-tmpfiles(8), systemd-delta(1), systemd.exec(5), attr(5), getfattr(1), setfattr(1), setfacl(1), getfacl(1), chattr(1), btrfs-subvolume(8), btrfs-qgroup(8)ANMERKUNGEN
- 1.
- Base64-dekodiert
- 2.
- System- und Dienste-Zugangsberechtigungen
- 3.
- Hinweise zur Auflösbarkeit von Benutzer- und Gruppennamen
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <[email protected]> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzersystemd 252 |