web-dev-qa-db-ja.com

machine-idはuuidですか?

質問を検索しましたが、誰も答えませんでした:machine-idはメインボードUUID(Windowsの「get csproduct UUID」コマンドで取得)と同じくらいユニークですか?また、MACアドレスの横にあるマシンIDにライセンスをバインドするのに十分な信頼性がありますか?または、ライセンスに使用できる* nixシステムのuuidは何ですか?

6
Nima

はい、今日。

これはsystemdのマニュアルでカバーされています。 _/etc/machine-id_の値は元々有効なUUIDではありませんでした。これは、systemdの人々がバージョン4 UUIDを生成するための正しいコードを元々書いていないためです。しかし、これは修正されました。

ライセンスをマシンIDにバインドする場合、ライセンスが変更される可能性があることに注意してください…

  • …誰かが_/etc/machine-id_を削除し、次のブートストラップで再作成された場合。
  • …_/etc_(通常は実際にはルートボリュームにある)がブートストラップ時に読み取り/書き込みでマウントされていない場合、_/etc/machine-id_は無効または欠落しており、_/etc_は後で読み取り/書き込みで再マウントできません_/etc/machine-id_の書き込みを許可します。
  • …オペレーティングシステムが実行されていないときに_/etc_を含むディスクボリュームが別の別のディスクボリュームに交換された場合、または誰かが_systemd-firstboot_などのツールを使用してディスクボリュームのマシンIDを変更した場合
  • …システムがsystemdの人々が「ステートレス」と呼ぶものであり、(事実上、これよりも少し複雑である)_/etc/machine-id_がeveryブートストラップで再作成されます。
  • …機械のコンテナ内部。

しかし、それは意図的に変更しない

  • …メインボード、プロセッサ、またはNICが交換された場合。
  • …NICのMACアドレスが変更された場合。
  • …ルートボリューム(より具体的には、_/etc_を含むボリューム)がddまたはpaxなどの代替ディスクにイメージ化されている場合。
  • …システムの実行時(システム管理者が故意に悪用しない限り)。
  • …あるbootstrap _/etc/machine-id_が有効で、空でなく、初めて書き込み可能な場合は、次へ。

移植性に関する注意

  • _/var/lib/dbus/machine-id_よりも_/etc/machine-id_を使用しないでください。
    • _/etc/machine-id_を生成する元のデスクトップバスファイルは、残念ながら、オペレーティングシステム間で移植可能な固定された場所にありません。一部のシステムでは、_/var/lib/dbus/machine-id_にあります。 _/var/db/dbus/machine-id_で他の人に。
    • 2013年頃、D-Busは_/etc/machine-id_が存在する場合はそれを使用するように変更され、_/var_内のファイルに置き換わりました。
    • 2015年、Debian/Ubuntuの人々 /var_のD-Busファイルをデフォルトで_/etc/machine-id_へのシンボリックリンクにした (いずれの場合も)。
  • _/etc/machine-id_は、bootstrapプロセスで__/var_がマウントされた後、またはネットワークインターフェイスが起動された後にのみ利用可能です。
  • Vanilla FreeBSD/TrueOS、NetBSD、およびOpenBSDは_/etc/machine-id_を提供していませんが、noshツールセットは、BSDが期待するBSD固有の場所も知っている、それを作成するためのポータブルツール(Linuxでも使用可能)を提供しますこのようなIDを使用して、トウェインの一貫性を保ちます。

参考文献

8
JdeBP

簡単なGoogle検索から:

  • / etc/machine-id は一意である必要があり、マシンが再インストールされた場合にのみ変更されますが、多くのシステムにはないsystemdによって提供されます
  • / var/lib/dbus/machine-id は一意である必要があり、より広く利用できる必要があります。 docs ハードウェア構成が変更されれば変更できると言いますが、 practice では、マシンが再インストールされた場合にのみ変更されると思います
  • system-uuid を使用することもできますが、rootである必要があり、マザーボードが変更されると変更されます

/var/lib/dbus/machine-idは、ほとんどの状況に最適な方法のようです。

参考文献:

3
Mikel