Provided by: manpages-de_4.13-4_all 

BEZEICHNUNG
systemd-creds - Dienstezugangsberechtigungen auflisten, anzeigen, ver- und entschlüsseln
ÜBERSICHT
systemd-creds [OPTIONEN…]
BESCHREIBUNG
systemd-creds ist ein Werkzeug zum Auflisten, Anzeigen, Ver- und Entschlüsseln von
Unit-Zugangsberechtigungen. Zugangsberechtigungen sind binäre oder textuelle Objekte beschränkter Größe,
die an Unit-Prozesse übergeben werden können. Sie werden primär zur Übergabe kryptographischer Schlüssel
(sowohl öffentliche als auch private) oder Zertifikate, Benutzerkonteninformationen oder
Identitätsinformationen vom Rechner an Dienste verwandt.
Zugangsberechtigungen werden in Unit-Dateien über die Einstellungen LoadCredential=, SetCredential=,
LoadCredentialEncrypted= und SetCredentialEncrypted= konfiguriert, siehe systemd.exec(5) für Details.
BEFEHLE
Die folgenden Befehle werden verstanden:
list
Zeigt eine Liste von Zugangsberechtigungen an, die im aktuellen Ausführungskontext übergeben wurden.
Dieser Befehl zeigt die Dateien in dem durch die Umgebungsvariable $CREDENTIALS_DIRECTORY
referenzierten Verzeichnis an und ist dazu gedacht, innerhalb des Dienstekontextes ausgeführt zu
werden.
Zusammen mit jedem Zugangsberechtigungsnamen wird die Größe und der Sicherheitszustand angezeigt.
Letzterer ist entweder »secure« (falls die Zugangsberechtigung sich in nicht-auslagerungsfähigem
Speicher befindet, d.h. »ramfs«), »weak« (falls sie sich in anderen Arten von Speicher befindet) oder
»insecure« (falls sie einen Zugriffsmodus hat, der nicht 0400 ist, d.h. von irgendjemand anders außer
dem Eigentümer lesbar ist).
cat Zugangsberechtigung…
Zeigt den Inhalt der angegebenen Zugangsberechtigung, die im aktuellen Ausführungskontext übergeben
wurde. Akzeptiert die Namen einer oder mehrerer Zugangsberechtigungen, deren Inhalte auf die
Standardausgabe geschrieben werden.
Wird dies mit --json= oder --transcode= kombiniert, dann wird die Ausgabe auf einfache Art vor der
Ausgabe umgewandelt.
setup
Erstellt einen Rechnerverschlüsselungsschlüssel für Zugangsberechtigungen, falls bisher noch keiner
erstellt wurde. Dies stellt sicher, dass die Datei /var/lib/systemd/credential.secret mit einem
zufälligen Geheimnis initialisiert wurde, falls sie noch nicht existiert. Dieser geheime Schlüssel
wird zum Ver-/Entschlüsseln von Zugangsberechtigungen mit encrypt oder decrypt verwandt und nur der
Benutzer root hat Zugriff darauf. Beachten Sie, dass normalerweise keine Notwendigkeit besteht,
diesen Befehl explizit aufzurufen, da er implizit aufgerufen wird, wenn encrypt aufgerufen und die
Verschlüsselung der Zugangsberechtigung mit dem Rechnerschlüssel ausgewählt wird.
encrypt Eingabe|- Ausgabe|-
Lädt die angegebene (unverschlüsselte Klartext-)Eingabezugangsberechtigungsdatei, verschlüsselt sie
und schreibt die (verschlüsselte Chiffretext-)Version in die angegebe
Ausgabezugangsberechtigungsdatei. Die entstehende Datei kann in der Einstellung
LoadCredentialEncrypted= in Unit-Dateien referenziert werden oder ihr Inhalt direkt in Einstellungen
SetCredentialEncrypted= verwandt werden.
Akzeptiert zwei Dateisystempfade. Der Dateinamenanteil des Ausgabepfades wird als Name in die
verschlüsselte Zugangsberechtigung eingebettet, um sicherzustellen, dass verschlüsselte
Zugangsberechtigungen nicht umbenannt oder für andere Zwecke wiederverwendet werden, ohne dass das
bemerkt wird. Der einzubettende Zugangsberechtigungsname kann mit der Einstellung --name= außer Kraft
gesetzt werden. Die Eingabe- oder Ausgabepfade können als »-« angegeben werden, die
Zugangsberechtigungsdaten werden dann aus der Standardeingabe gelesen bzw. in die Standardausgabe
geschrieben. Falls der Ausgabepfad als »-« angegeben wurde, kann der Zugangsberechtigungsname nicht
aus dem Dateisystempfad abgeleitet werden und sollte daher explizit mit dem Schalter --name=
angegeben werden.
Die Zugangsberechtigungsdaten werden symmetrisch mit einem der folgenden Verschlüsselungsschlüssel
verschlüsselt:
1. Einem geheimen Schlüssel, der aus dem TPM2-Chip des Systems abgeleitet wurde. Dieser
Verschlüsselungsschlüssel wird nicht auf dem Rechnersystem gespeichert und die Entschlüsselung
ist daher nur mit Zugriff auf den ursprünglichen TPM2-Chip möglich. Oder mit anderen Worten
gesagt, eine auf diese Weise gesicherte Zugangsberechtigung kann nur auf der lokalen Maschine
wieder entschlüsselt werden.
2. Ein in der Datei /var/lib/systemd/credential.secret gespeicherter geheimer Schlüssel, auf den nur
der Benutzer root zugreifen kann. Dieser »Rechner«-Verschlüsselungsschlüssel wird im Dateisystem
des Rechners gespeichert und daher ist die Entschlüsselung mit Zugriff auf das Dateisystem des
Rechners und ausreichenden Privilegien möglich. Der Schlüssel wird bei Bedarf automatisch
erstellt, kann aber auch explizit mit dem oben beschriebenen Befehl setup erstellt werden.
3. Eine Kombination der beiden vorstehenden: ein sowohl vom TPM2-Chip als auch dem
Rechnerdateisystem abgeleiteter Schlüssel. Das bedeutet, dass die Entschlüsselung sowohl Zugriff
auf den ursprünglichen TPM2-Chip als auch die Betriebssysteminstallation benötigt. Dies ist das
Vorgabemodus für Aktionen, falls ein TPM2-Chip verfügbar ist und sich /var/lib/systemd/ auf einem
dauerhaften Medium befindet.
Welcher der drei Schlüssel für Verschlüsselung verwandt werden soll, kann mit dem Schalter
--with-key= konfiguriert werden. Abhängig vom Einsatzfall für die verschlüsselten
Zugangsberechtigungen kann sich der Schlüssel unterscheiden. Für Zugangsberechtigungen, auf die
während der anfänglichen RAM-Platte (Initrd) zugegriffen werden soll, ist die Verschlüsselung mit dem
Rechnerschlüssel nicht geeignet, da von der Initrd typischerweise kein Zugriff auf den
Rechnerschlüssel möglich ist. Daher sollte für solche Zugangsberechtigungen nur der TPM2-Schlüssel
verwandt werden.
Verschlüsselte Zugangsberechtigungen sind immer Base64-kodiert.
Verwenden Sie decrypt (siehe unten), um die Verschlüsselungsaktion rückgängig zu machen und die
entschlüsselte Klartextzugangsberechtigung aus der verschlüsselten Chiffretext-Zugangsberechtigung zu
erhalten.
Die Zugangsberechtigungsdaten werden mittels AES256-GCM verschlüsselt, d.h. sowohl Vertraulichkeit
als auch Integrität wird geschützt, mittels eines SHA256-Hashes als Schlüssel für einen oder beide
der oben beschriebenen Schlüssel.
decrypt Eingabe|- [Ausgabe|-]
Macht den Effekt der Aktion encrypt rückgängig; lädt die angegebenen (verschlüsselten
Chriffre-)-Eingabedatei, entschlüsselt sie und schreibt die (entschlüsselte Klartext-)Version in die
angegebene Ausgabe-Zugangsberechtigungsdatei.
Akzeptiert einen oder zwei Dateisystempfade. Der Dateinamenanteil des Eingabepfads wird mit dem in
der verschlüsselten Datei eingebetteten Zugangsberechtigungsnamen verglichen. Falls dieser nicht
übereinstimmt, schlägt die Entschlüsselung fehl. Dies erfolgt, um sicherzustellen, dass
verschlüsselte Zugangsberechtigungsdaten nicht für andere Zwecke umgewidmet werden, ohne dass dies
erkannt wird. Der mit dem eingebetteten Zugangsberechtigungsname zu vergleichende
Zugangsberechtigungsname kann mit dem Schalter --name= außer Kraft gesetzt werden. Falls der
Eingabepfad als »-« angegeben wurde, wird die verschlüsselte Zugangsberechtigung von der
Standardeingabe gelesen. Falls nur ein Pfad angegeben ist oder der Ausgabepfad als »-« angegeben
wurde, wird die entschlüsselte Zugangsberechtigung auf die Standardausgabe geschrieben. In diesem
Modus kann der eingebettete Name in der Zugangsberechtigung nicht aus dem Pfad abgeleitet werden und
sollte explizit mit --name= angegeben werden.
Entschlüsseln von Zugangsberechtigungen benötigt Zugriff auf den ursprünglichen TPM2-Chipsatz
und/oder den Zugangsberechtigungs-Rechnerschlüssel, siehe oben. Informationen darüber, welche
Schlüssel benötigt werden, ist in den verschlüsselten Zugangsberechtigungsdaten eingebettet und die
Entschlüsselung ist daher vollständig automatisiert.
-h, --help
Zeigt einen kurzen Hilfetext an und beendet das Programm.
--version
Zeigt eine kurze Versionszeichenkette an und beendet das Programm.
OPTIONEN
--system
Agiert auf den Zugangsberechtigungen für das System als ganzes anstatt denen, die im aktuellen
Ausführungskontext übergeben wurden, wenn dies zusammen mit den Befehlen list und cat angegeben wird.
Dies ist in Container-Umgebungen nützlich, bei denen Zugangsberechtigungen von dem
Container-Verwalter übergeben werden können.
--transcode=
Wandelt die Ausgabe für die Anzeige um, wenn dies zusammen mit den Befehlen cat oder decrypt
angegeben wird. Akzeptiert entweder »base64«, »unbase64«, »hex« oder »unhex« als Argument, um die
Zugangsdaten mit Base64 oder einer Reihe von hexadezimalen Werten zu (de)kodieren.
Beachten Sie, dass dies beim Befehl encrypt keine Auswirkung hat, da die verschlüsselten
Zugangsberechtigungen bedingungslos in Base64 kodiert sind.
--newline=
Steuert, ob ein abschließendes Zeilenumbruchszeichen am Ende hinzugefügt wird, falls dies nicht
bereits sowieso der Fall ist, wenn dies zusammen mit den Befehlen cat oder decrypt angegeben wird.
Akzeptiert entweder »auto«, »yes« oder »no«. Der Vorgabemodus »auto« wird der Ausgabe nur ein
einzelnes Zeilenumbruchzeichen anhängen, wenn die Zugangsberechtigungsdaten auf ein TTY geschrieben
werden.
--pretty, -p
Steuert, ob die verschlüsselten Zugangsberechtigungen als Einstellung SetCredentialEncrypted=
angezeigt werden sollen, die dann direkt in eine Unit-Datei kopiert werden kann, wenn dies zusammen
mit dem Befehl encrypt angegeben wird.
--name=Name
Steuert den Namen der Zugangsberechtigung, der in die verschlüsselten Zugangsberechtigungsdaten
eingebettet werden soll, wenn dies zusammen mit dem Befehl encrypt angegeben wird. Falls nicht
angegeben, wird der Name automatisch aus der Dateinamenkomponente des angegebenen Ausgabepfades
ausgewählt. Falls als leere Zeichenkette angegeben, wird kein Zugangsberechtigungsname in der
verschlüsselten Zugangsberechtigung eingebettet und bei der Entschlüsselung der Zugangsberechtigung
erfolgt keine Überprüfung des Zugangsberechtigungsnamens.
Steuert den Zugangsberechtigungsnamen, der zum Validieren des in der verschlüsselten
Zugangsberechtigung eingebetteten Zugangsberechtigungsnamen verwandt werden soll, wenn dies zusammen
mit dem Befehl decrypt angegeben wird. Falls nicht angegeben, wird der Name automatisch aus der
Dateinamenkomponente des angegebenen Eingabepfades ausgewählt. Falls kein Zugangsberechtigungsname in
der verschlüsselten Zugangsberechtigungsdatei eingebettet ist (d.h. beim Verschlüsseln wurde --name=
mit einer leeren Zeichenkette verwandt), hat der angegebene Name keine Wirkung, da keine Validierung
des Zugangsberechtigungsnamens erfolgt.
Einbetten des Zugangsberechtigungsnamens in der verschlüsselten Zugangsberechtigung erfolgt, um gegen
die Wiederverwendung von Zugangsberechtigungen für andere als die ursprünglich geplanten Zwecke zu
schützen, wobei angenommen wird, dass der Name der Zugangsberechtigung sorgfältig gewählt wird, um
seinen geplanten Zweck zu kodieren.
--timestamp=Zeitstempel
Steuert den in die verschlüsselte Zugangsberechtigung einzubettenden Zeitstempel, wenn dies zusammen
mit dem Befehl encrypt angegeben wird. Standardmäßig die aktuelle Zeit. Akzeptiert einen Zeitstempel
in dem in systemd.time(5) beschriebenen Format.
Steuert den Zeitstempel, der zum Validieren des »not-after«-Zeitstempels verwandt werden soll, der
mit --not-after= während der Verschlüsselung konfiguriert wurde, wenn dies zusammen mit dem Befehl
decrypt angegeben wird. Falls nicht angegeben, ist die Vorgabe die aktuelle Systemzeit.
--not-after=Zeitstempel
Steuert die Zeit, ab der die Zugangsberechtigung nicht mehr verwandt werden soll, wenn dies zusammen
mit dem Befehl encrypt angegeben wird. Dies bettet den angegebenen Zeitstempel in die verschlüsselten
Zugangsberechtigungen ein. Während der Entschlüsselung wird der Zeitstempel gegen die aktuelle
Systemzeit geprüft und falls der Zeitstempel in der Vergangenheit liegt, wird die Entschlüsselung
fehlschlagen. Standardmäßig wird kein solcher Zeitstempel gesetzt. Akzeptiert einen Zeitstempel in
dem in systemd.time(5) beschriebenen Format.
--with-key=, -H, -T
Steuert den zu verwendenden Verschlüsselungsschlüssel, wenn dies zusammen mit dem Befehl encrypt
angegeben wird. Akzeptiert entweder »host«, »tpm2«, »host+tpm2« oder »auto«. Siehe oben für Details
über die drei Schlüsseltypen. Falls auf »auto« gesetzt (die Vorgabe), wird der TPM2-Schlüssel
verwandt, falls ein TPM2-Gerät gefunden und die Ausführung nicht in einem Container ist. Der
Rechnerschlüssel wird verwandt, falls /var/lib/systemd/ auf einem dauerhaften Medium ist. Dies
bedeutet, dass auf typischen Systemen die Verschlüsselung standardmäßig sowohl an den TPM2-Chip als
auch die Betriebssysteminstallation gebunden ist und beide verfügbar sein müssen, um die
Zugangsberechtigung wieder zu entschlüsseln. Falls »auto« ausgewählt ist und weder ein TPM2 verfügbar
ist (oder die Ausführung in einem Container stattfindet) noch /var/lib/systemd/ auf dauerhaftem
Medium vorhanden ist, wird die Verschlüsselung fehlschlagen.
Der Schalter -H ist eine Abkürzung für --with-key=host. Entsprechend ist -T eine Abkürzung für
-with-key=tpm2.
Bei der Verschlüsselung von Zugangsberechtigungen, die in der anfänglichen RAM-Platte (Initrd)
verwandt werden sollen, bei der /var/lib/systemd/ typischerweise nicht verfügbar ist, sollte der
Modus --with-key=tpm2 sichergestellt werden, um die Anbindung an das Rechnergeheimnis auszuschalten.
Dieser Schalter hat beim Befehl decrypt keine Auswirkung, da Informationen über den für die
Entschlüsselung zu verwendenden Schlüssel bereits in der verschlüsselten Zugangsberechtigung
enthalten sind.
--tpm2-device=PFAD
Steuert das zu verwendende TPM2-Gerät. Erwartet einen Geräteknotenpfad, der sich auf einen TPM2-Chip
bezieht (z.B. /dev/tpmrm0). Alternativ kann der besondere Wert »auto« angegeben werden, um den
Geräteknoten eines geeigneten TPM2-Gerätes automatisch zu bestimmen (von denen es genau einen geben
darf). Der besondere Wert »list« kann zum Aufzählen aller derzeit ermittelten geeigneten TPM2-Geräte
verwandt werden.
--tpm2-pcrs= [PCR…]
Konfiguriert die TPM2 PCRs (Plattformkonfigurationsregister), in die der Verschlüsselungsschlüssel
gebunden werden soll. Akzeptiert eine durch »+« getrennte Liste von numerischen PCR-Indices im
Bereich 0…23. Falls nicht benutzt, ist die Vorgabe nur PCR 7. Falls eine leere Liste angegeben ist,
wird der Verschlüsselungsschlüssel an überhaupt kein PCR gebunden. Für Details über die verfügbaren
PCRs siehe die Dokumentation des Schalters mit dem gleichen Namen in systemd-cryptenroll(1).
--no-pager
Leitet die Ausgabe nicht an ein Textanzeigeprogramm weiter.
--no-legend
Gibt die Legende nicht aus, d.h. die Spaltenköpfe und die Fußzeile mit Hinweisen.
--json=MODUS
Zeigt die Ausgabe als JSON formatiert. Erwartet entweder »short« (für die kürzest mögliche Ausgabe
ohne unnötigen Leerraum oder Zeilenumbrüche), »pretty« (für eine schönere Version der gleichen
Ausgabe, mit Einzügen und Zeilenumbrüchen) oder »off« (um die Vorgabe (JSON-Ausgabe) auszuschalten).
EXIT-STATUS
Bei Erfolg wird 0 zurückgeliefert.
BEISPIELE
Beispiel 1. Verschlüsselt ein Passwort zur Verwendung als Zugangsberechtigung
Die folgende Befehlszeile verschlüsselt das angegebene Passwort »hunter2« und schreibt das Ergebnis in
eine Datei password.cred.
# echo -n hunter2 | systemd-creds encrypt - password.cred
Dies entschlüsselt die Datei password.cred wieder und legt damit das eigentliche Passwort offen:
# systemd-creds decrypt password.cred
hunter2
Beispiel 2. Verschlüsselt ein Passwort und nimmt es in eine Unit-Datei auf
Die folgende Befehlszeile bittet den Benutzer um ein Passwort und erstellt daraus eine
SetCredentialEncrypted=-Zeile für eine Zugangsberechtigung namens »mysql-password«, geeignet für die
Aufnahme in eine Unit-Datei.
# systemd-ask-password -n | systemd-creds encrypt --name=mysql-password -p - -
🔐 Password: ****
SetCredentialEncrypted=mysql-password: \
k6iUCUh0RJCQyvL8k8q1UyAAAAABAAAADAAAABAAAAASfFsBoPLIm/dlDoGAAAAAAAAAA \
NAAAAAgAAAAAH4AILIOZ3w6rTzYsBy9G7liaCAd4i+Kpvs8mAgArzwuKxd0ABDjgSeO5k \
mKQc58zM94ZffyRmuNeX1lVHE+9e2YD87KfRFNoDLS7F3YmCb347gCiSk2an9egZ7Y0Xs \
700Kr6heqQswQEemNEc62k9RJnEl2q7SbcEYguegnPQUATgAIAAsAAAASACA/B90W7E+6 \
yAR9NgiIJvxr9bpElztwzB5lUJAxtMBHIgAQACCaSV9DradOZz4EvO/LSaRyRSq2Hj0ym \
gVJk/dVzE8Uxj8H3RbsT7rIBH02CIgm/Gv1ukSXO3DMHmVQkDG0wEciyageTfrVEer8z5 \
9cUQfM5ynSaV2UjeUWEHuz4fwDsXGLB9eELXLztzUU9nsAyLvs3ZRR+eEK/A==
Die erstellte Zeile kann 1:1 in eine Unit-Datei eingefügt werden und wird sicherstellen, dass das
erlangte Passwort in der Zugangsberechtigungsdatei $CREDENTIALS_DIRECTORY/mysql-password für den
gestarteten Dienst zur Verfügung gestellt wird.
Unter Verwendung der Unit-Datei-Ergänzungslogik kann dies zur sicheren Übergabe einer
Passwort-Zugangsberechtigung an eine Unit verwandt werden. Ein ähnliche, umfassende Gruppe an Befehlen
zum Einfügen eines Passworts in einen Dienst xyz.service:
# mkdir -p /etc/systemd/system/xyz.service.d
# systemd-ask-password -n | systemd-creds encrypt --name=mysql-password -p - - > /etc/systemd/system/xyz.service.d/50-password.conf
# systemctl daemon-reload
# systemctl restart xyz.service
SIEHE AUCH
systemd(1), systemd.exec(5)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> 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 Übersetzer.
systemd 250 SYSTEMD-CREDS(1)