UUIDs: Überlegungen zum Ändern von n Zeichen einer Version 4 in ein Wort

552
user217893

UUIDs mit 36 ​​Zeichen sind großartig. Meine Intuition besagt jedoch, dass ich in meinem persönlichen Heimgebrauch nicht die ganze Einzigartigkeit von 36 Zeichen brauche. Aber ich denke vielleicht nicht an alle Situationen, in denen sie ins Spiel kommen.

Ich möchte einige der Zeichen in einer UUID der Version 4 ausrangieren und sie durch etwas ersetzen, das ich verstehen kann. Ersetzen Sie beispielsweise 4 Zeichen in der UUID durch cafe. Das würde mir beim Scripting helfen. Da zum Beispiel Krypto-LUKS-Container keine Etiketten akzeptieren (die ich kenne), bin ich mit dem Umgang mit ihren UUIDs beschäftigt (es sei denn, ich schreibe udev-Regeln ).

Dies erhöht die Gefahr von Kollisionen. Wenn mein persönlicher Bereich in den nächsten fünf Jahren 10.000 UUIDs umfasst, scheint das Risiko jedoch vernachlässigbar, denke ich. Aber ich könnte mich irren.

Wer hat Erfahrung damit?

0
Formale Anmerkung: Sprichst du von kanonischer 36-Zeichen-Darstellung? In diesem Fall ist es nicht möglich, 6 Zeichen durch "Nächte" zu ersetzen, da diese Buchstaben keine Hexadezimalziffern sind. Sie können jedoch mit "bad-1dea" gehen. Kamil Maciorowski vor 7 Jahren 2
lol und guter Punkt, überarbeitete Frage von "Nächte" in "Café" usw user217893 vor 7 Jahren 0

1 Antwort auf die Frage

0
Rod Smith

Zusammenfassung:

Anstatt zu versuchen, UUIDs auf diese Weise zu "hacken", schlage ich vor, dass Sie stattdessen Dateisystembezeichnungen, Partitionsbezeichnungen, logische Datenträgernamen oder Skriptvariablen verwenden, da diese Tools alle für die von Ihnen vorgeschlagenen Vorschläge ausgelegt sind. Welche Details am besten funktionieren, hängt von Ihren speziellen Bedürfnissen ab, die sich aus Ihrer Frage nicht zu 100% ergeben.

Erweiterte Empfehlung:

Eine universell eindeutige Kennung (UUID) ist eine 128-Bit- Zahl (16 Byte) , die normalerweise in einer hexadezimalen Zeichenfolge ausgedrückt wird und bei "-" Zeichen zwischen bestimmten Elementen 36 Zeichen ergibt. Dies sind jedoch keine alphanumerischen Zeichen. Sie sind Hexadezimalzahlen. Sie können also keine Buchstaben eingeben, sondern nur Hexadezimalwerte. Abgesehen von der Tatsache, dass Sie den Geist der UUIDs durch das, was Sie vorschlagen, in Frage stellen würde, ist die Beschränkung der Verwendung nur der ersten sechs Buchstaben des lateinischen Alphabets ein großes Problem bei Ihrer Idee.

Global eindeutige Bezeichner (GUIDs) sind im Wesentlichen die gleichen wie UUIDs, aber unterschiedliche Standards verwenden unterschiedliche Namen, und es gibt Varianten von beiden. udevWenn Sie sich auf Regeln beziehen, denke ich, dass Sie Linux verwenden, in dem UUIDs normalerweise Dateisystemen zugewiesen werden, wohingegen GUIDs Partitionen zugeordnet sind (bei Verwendung des GPT-Partitionierungsschemas). In Linux wird auf Partitions-GUIDs häufig (in /etc/fstabusw.) unter Verwendung der PARTUUIDKennung verwiesen .

Sowohl Dateisysteme als auch GPT-Partitionen können zusätzlich zu UUIDs / GUIDs Beschriftungen aufweisen. Da es sich anscheinend so anhört, als würden Sie Ihre Identifikatoren für Sie als Mensch verständlich machen, empfiehlt es sich, Etiketten anstelle von UUIDs / GUIDs zu verwenden. In vielen Linux-Tools wird auf Dateisystem-Labels mit dem LABELBezeichner verwiesen, und Partitions-Labels verwenden den PARTLABELBezeichner.

Es ist aus Ihrer Frage nicht klar, wo genau Sie den Bezeichner verwenden möchten (Sie implizieren dies in einem Skript, sagen aber nicht, was das Skript macht), daher weiß ich nicht, ob die Verwendung des LABELoder des Bezeichners PARTLABELfür Sie funktionieren würde, aber Vielleicht möchten Sie sich das genauer ansehen. Außerdem würde ich das Schreiben von udevRegeln nicht ausschließen, um Symlinks zu Geräten zu erhalten, die Labels verwenden. udevRegeln sind nicht so schwer zu schreiben, und wenn sie Ihr Problem lösen, wäre das Schreiben solcher Regeln besser als das Hacken von UUID / GUID-Werten, die den einschlägigen Standards widersprechen.

Beachten Sie jedoch, dass Partitionsbezeichnungen eine Funktion von GPT sind, nicht jedoch von MBR. Wenn Sie MBR verwenden, sind Partitionsbezeichnungen daher keine Option. Sie können zu GPT wechseln (auch ohne erneute Installation des Betriebssystems, obwohl Sie Ihren Bootloader neu installieren müssten), wenn dies hilfreich wäre.

Eine andere Möglichkeit könnte sein, Ihr System für die Verwendung von LVM neu zu konfigurieren. Als Beispiel verwende ich LVM auf einem meiner Computer und habe bestimmte LVs in meinem LVM verschlüsselt. In dieser Konfiguration kann sich eine verschlüsselte LV befinden /dev/mapper/myvg-homeund die entschlüsselte Version ist /dev/mapper/myvg-home_crypt. Da LVs benannt werden und normalerweise auf diese Weise bezeichnet werden, erhalten Sie sozusagen eine verständlichere Referenz für "kostenlos".

Eine andere Möglichkeit: Sie beziehen sich auf Skripte. Wenn Sie Skripts schreiben, die sich auf Partitionen über UUID / GUID-Werte beziehen, können Sie diese Werte Variablen zuweisen, wie in:

HOME_PART="c5424f69-5016-48bd-adf4-76bd95b1f6bc" 

Syntaxdetails hängen natürlich von Ihrer Skriptsprache ab, aber das ist der Kern der Idee. Sie können dann auf HOME_PARTandere Stellen im Skript verweisen . Wenn das Skript auf mehreren Systemen ausgeführt werden sollte, können Sie möglicherweise einen Weg finden, um bestimmte Partitionen zu identifizieren und ihre UUID / GUID-Werte zuzuordnen, z. B. durch Analysieren /etc/fstab, um die relevanten Daten anhand von Einhängepunkten zu extrahieren. Dies kann je nach Ihren Anforderungen äußerst flexibel sein.

Unabhängig davon, ob Sie Dateisystembezeichnungen, Partitionsbeschriftungen, LV-Namen oder Skriptvariablen verwenden, können Sie den (mehr oder weniger) vollständigen Satz alphanumerischer Zeichen nutzen, und Sie müssen nicht einmal mit einer teilweisen hexadezimalen UUID umgehen / GUID-Wert Einige Zeichen sind aufgrund praktischer Grenzen der jeweiligen Standards möglicherweise nicht zulässig, aber Sie können zumindest die ASCII-Zahlen und Buchstaben verwenden, die Sie möchten.