Provided by: manpages-de_4.27.0-1_all 

BEZEICHNUNG
machine-id - Lokale Konfigurationsdatei zur Maschinenkennung
ÜBERSICHT
/etc/machine-id
BESCHREIBUNG
Die Datei /etc/machine-id enthält eine eindeutige Maschinenkennung des lokalen Systems, die während der
Installation oder des Systemstarts gesetzt wird. Die Maschinenkennung ist eine einzelne, hexadezimale
32-Zeichen-Kennung (in Kleinbuchstaben), die mit einem Zeilenumbruch abgeschlossen wird. Nach der
Dekodierung aus dem hexadezimalen entspricht sie einem 16-Byte/128-Bit-Wert. Diese Kennung darf nicht
komplett nur aus Nullen bestehen.
Die Maschinenkennung wird normalerweise während der Systeminstallation oder des ersten Systemstarts aus
einer Zufallsquelle erstellt und bleibt für alle nachfolgenden Systemstarts konstant. Für zustandslose
Systeme kann sie optional falls notwendig zur Laufzeit während der frühen Systemstartphase erstellt
werden.
Die Maschinenkennung kann beispielsweise beim Systemstart über das Netz mit dem
Kernelbefehlszeilenparameter systemd.machine_id= oder durch Übergabe der Option --machine-id= an Systemd
gesetzt werden. Eine in dieser Weise festgelegte Maschinenkennung hat eine höhere Priorität und wird
statt der in /etc/machine-id gespeicherten Kennung verwandt.
Die Maschinenkennung ändert sich nicht, wenn sich die lokale oder Netzkonfiguration ändert oder die
Hardware ausgetauscht wird. Daher und aufgrund ihrer größeren Länge ist sie eine nützlichere Ersetzung
des von POSIX festgelegten Aufrufs gethostid(3).
Diese Maschinenkennung folgt dem gleichen Format und der gleichen Logik wie die Maschinenkennung von
D-Bus.
Diese Kennung identifiziert den Rechner eindeutig. Sie sollte »vertraulich« behandelt und nicht in
unvertrauenswürdigen Umgebungen, insbesondere im Netz offengelegt werden. Falls für einige Anwendungen
eine stabile Kennung, die an eine Maschine gebunden ist, benötigt wird, darf die Maschinenkennung oder
Teile davon nicht direkt verwandt werden. Stattdessen sollte die Maschinenkennung mit einer
kryptographischen, mit einem Schlüssel versehenen Funktion in einen Hash verwandelt werden, wobei ein
fester, anwendungsbezogener Schlüssel verwandt werden sollte. Damit ist die Kennung ausreichend eindeutig
und in einer konstanten Art und Weise von der Maschinenkennung abgeleitet, aber es gibt dann keine
Möglichkeit, die ursprüngliche Maschinenkennung aus der anwendungsspezifischen abzuleiten. Das API
sd_id128_get_machine_app_specific(3) stellt eine Implementierung eines solchen Algorithmus bereit.
INITIALISIERUNG
Im normalen Betrieb sollte jede Maschine eine nicht leere Kennung haben. Die Kennung von jeder Maschine
sollte eindeutig sein. Um diese Ziele zu erreichen, kann /etc/machine-id auf verschiedene Arten
initialisiert werden.
Für normale Betriebssysteminstallationen, bei denen ein angepasstes Abbild für eine bestimmte Maschine
erstellt wird, sollte /etc/machine-id während der Installation befüllt werden.
systemd-machine-id-setup(1) kann von Installationswerkzeugen verwandt werden, um die Maschinenkennung zum
Installationszeitpunkt zu initialisieren, aber /etc/machine-id kann auch mit anderen Mitteln geschrieben
werden.
Für Betriebssystemabbilder, die einmal erzeugt und dann auf mehreren Maschinen verwandt werden,
beispielsweise Container oder in der Cloud, sollte /etc/machine-id entweder fehlen oder in dem
generischen Dateisystem leer sein (der Unterschied zwischen diesen zwei Optionen wird weiter unten unter
»Semantik beim ersten Systemstart« beschrieben). Während des Systemstarts wird eine Kennung erstellt und
falls möglich in dieser Datei gespeichert. An der Stelle eine leere Datei zu haben ist nützlich, da es
erlaubt, eine temporäre Datei mittels einer Bind-Einhängung über die echte Datei zu legen, falls das
Abbild nur lesend verwandt wird. Siehe auch Sicheres Bauen von Abbildern[1].
systemd-firstboot(1) kann zur Initialisierung von /etc/machine-id auf eingehängten (aber nicht
gestarteten) Systemabbildern verwandt werden.
Wenn eine Maschine mit systemd(1) gestartet wird, wird die Kennung der Maschine etabliert. Falls die
Optionen systemd.machine_id= oder --machine-id= (siehe ersten Abschnitt) angegeben werden, wird dieser
Wert verwandt. Falls diese Datei leer ist oder fehlt, wird Systemd versuchen, die D-Bus-Maschinenkennung
aus /var/lib/dbus/machine-id, den Wert der Kernelbefehlszeilenoption container_uuid, die
KVM-DMI-product_uuid oder die Devicetree VM,UUID (auf KVM-Systemen), die Xen-Hypervisor-UUID und
schließlich eine zufällig erstellte UUID zu verwenden. Es kann systemd.machine_id=firmware gesetzt
werden, um die Maschinenkennung aus der Firmware zu erstellen.
Nachdem die Maschinenkennung etabliert ist, wird systemd(1) versuchen, sie in /etc/machine-id zu
speichern. Falls dies fehlschlägt, wird es versuchen, sie als temporäre Datei mittels Bind-Einhängung
über /etc/machine-id zu legen. Es ist ein Fehler, falls das Dateisystem nur lesbar ist und keine
(möglicherweise leere) Datei /etc/machine-id enthält.
systemd-machine-id-commit.service(8) wird versuchen, die Maschinenkennung in das Dateisystem zu
schreiben, falls /etc/machine-id oder /etc/ während der frühen Systemstartphase schreibgeschützt sind,
aber später schreibbar werden.
SEMANTIK BEIM ERSTEN SYSTEMSTART
/etc/machine-id wird für die Entscheidung, ob ein Systemstart der erstmalige ist, verwandt. Die Regeln
sind wie folgt:
1. Das Kernelbefehlsargument systemd.condition_first_boot= kann dazu verwandt werden, die automatische
Erkennungslogik außer Kraft zu setzen, siehe kernel-command-line(7).
2. Andernfalls, falls /etc/machine-id nicht existiert, ist dies ein erstmaliger Systemstart. Während der
frühen Systemstartphase wird systemd »uninitialized\n« in diese Datei schreiben und eine temporäre
Datei darüber einhängen, die die eigentliche Maschinenkennung enthält. Später (nachdem
first-boot-complete.target erreicht wurde) wird die echte Maschinenkennung auf Platte geschrieben.
3. Falls /etc/machine-id die Zeichenkette »uninitialized« enthält, wird ein Systemstart auch als
erstmaliger Systemstart betrachtet. Der gleiche Mechanismus wie oben beschrieben erfolgt.
4. Falls /etc/machine-id existiert und leer ist, dann wird ein Systemstart nicht als erstmaliger
Systemstart betrachtet. systemd wird weiterhin eine Bind-Einhängung einer Datei, die die eigentliche
Maschinenkennung enthält, darüber ausführen und später versuchen, diese auf Platte zu schreiben
(falls /etc/ schreibbar ist).
5. Falls /etc/machine-id bereits eine gültige Maschinenkennung enthält, ist dies keine erstmaliger
Systemstart.
Falls entsprechend der obigen Regeln ein erstmaliger Systemstart erkannt wurde, werden Units mit
ConditionFirstBoot=yes ausgeführt und systemd wird zusätzliche Initialisierungsschritte durchlaufen,
insbesondere das Voreinstellen von Units.
BEZUG ZU OSF UUIDS
Beachten Sie, dass die Maschinenkennung historisch gesehen weder eine OSF-UUID, wie sie durch RFC 4122[2]
definiert wird, noch eine Microsoft GUID ist; beginnend mit Systemd v30 werden sich allerdings neu
erstellte Maschinenkennungen als Variante 1 Version 4 UUIDs (gemäß RFC 4122) eignen.
Zur Wahrung der Kompatibilität mit bestehenden Installationen sollte jede Anwendung, die eine streng
RFC-4122-konforme UUID benötigt, die Maschinenkennung dekodieren und dann die nachfolgenden (nicht
rückgängig machbare) Aktionen anwenden, um sie in eine gültige RFC-4122-Variante-1-Version-4-UUID zu
wandeln (hierbei ist »id« ein vorzeichenfreies Zeichenfeld):
/* UUID auf Version 4 setzen --- wirklich zufällige Erzeugung */
id[6] = (id[6] & 0x0F) | 0x40;
/* Die UUID-Variante auf DCE setzen */
id[8] = (id[8] & 0x3F) | 0x80;
(Dieser Code ist von »generate_random_uuid()« von drivers/char/random.c aus den Linux-Kernelquellen
inspiriert.)
GESCHICHTE
Das einfache Konfigurationsdateiformat von /etc/machine-id entspringt der durch D-Bus eingeführten Datei
/var/lib/dbus/machine-id. Tatsächlich kann letztere Datei ein Symlink auf /etc/machine-id sein.
SIEHE AUCH
systemd(1), systemd-machine-id-setup(1), gethostid(3), hostname(5), machine-info(5), os-release(5),
sd-id128(3), sd_id128_get_machine(3), systemd-firstboot(1)
ANMERKUNGEN
1. Sicheres Bauen von Abbildern
https://systemd.io/BUILDING_IMAGES
2. RFC 4122
https://tools.ietf.org/html/rfc4122
Ü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: debian-l10n-german@lists.debian.org.
systemd 257.6 MACHINE-ID(5)