machine-id

MACHINE-ID(5)                      machine-id                      MACHINE-ID(5)



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 lesen
       verwandt wird.

       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) und schließlich eine zufällig
       erstellte UUID zu verwenden.

       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. 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.

        2. Falls /etc/machine-id die Zeichenkette »uninitialized« enthält, wird
           ein Systemstart auch als erstmaliger Systemstart betrachtet. Der
           gleiche Mechanismus wie oben beschrieben erfolgt.

        3. 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).

        4. Falls /etc/machine-id bereits eine gültige Maschinenkennung enthält,
           ist dies keine erstmaliger Systemstart.

       Falls durch eine der obigen Regeln ein erstmaliger Systemstart erkannt
       wurde, werden Units mit ConditionFirstBoot=yes ausgeführt.

BEZUG ZU OSF UUIDS
       Beachten Sie, dass die Maschinenkennung historisch gesehen weder eine
       OSF-UUID, wie sie durch RFC 4122[1] definiert wird, noch eine Microsoft
       GUID ist; beginnend mit Systemd v30 werden sich allerdings neu erstellte
       Maschinenkennungen als v4 UUIDs eignen.

       Zur Wahrung der Kompatibilität mit bestehenden Installationen sollte jede
       Anwendung, die eine UUID benötigt, die Maschinenkennung dekodieren und
       dann die nachfolgenden Aktionen anwenden, um sie in eine gültige
       OSF-v4-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. 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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 247                                                        MACHINE-ID(5)