我搜索了我的问题,但没有人回答我:机器 ID 是否与主板 UUID 一样唯一(在 Windows 上通过“get csproduct UUID”命令获取)?除了 mac 地址之外,在机器 ID 上绑定许可证是否足够可靠?或者 *nix 系统上可用于许可的 uuid 是什么?
答案1
是的,现在。
systemd 手册对此进行了介绍。中的值/etc/machine-id
最初不是有效的 UUID,因为 systemd 人员最初并未编写正确的代码来生成版本 4 UUID。但此后此问题已得到解决。
如果您将许可证绑定到机器 ID,请注意它可能会更改...
- …如果有人删除
/etc/machine-id
并在下一次引导时重新创建; - …如果
/etc
(实际上通常在根卷上)在引导时未以读写方式安装,则/etc/machine-id
无效或丢失,并且/etc
以后无法重新以读写方式安装以允许/etc/machine-id
写入; /etc
…如果在操作系统未运行时包含的光盘卷被另一个不同的光盘卷替换,或者有人使用诸如以下工具更改了光盘卷上的机器 IDsystemd-firstboot
;- …如果系统是 systemd 人们所说的“无状态”并且(实际上,它比这稍微复杂一些)
/etc/machine-id
在以下位置重新创建每一个引导程序; - ...机器上的容器内。
但它是故意的,才不是改变 …
- …如果主板、处理器或网卡被更换;
- …如果网卡的 MAC 地址发生更改;
- ...如果根卷(更具体地说,包含 的卷)使用类似或 的
/etc
内容映像到替换光盘上;dd
pax
- …在系统运行时(除非系统管理员故意乱搞);
- …从一个引导程序到下一个引导程序,如果
/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 人们使 D-Bus 文件默认
/var
为符号链接/etc/machine-id
, 任何状况之下。
- 不幸的是,生成的原始桌面总线文件
/etc/machine-id
不限于仅在/var
安装后或网络接口启动后的引导过程中可用。- 尽管普通的 FreeBSD/TrueOS、NetBSD 和 OpenBSD 不提供
/etc/machine-id
,nosh 工具集提供了用于创建它的便携式工具(也可在 Linux 上使用),这些工具还知道 BSD 期望此类 ID 的特定于 BSD 的位置,并保留吐温一致。
进一步阅读
- 伦纳特·珀特林等人
machine-id
。 systemd 手册页。 Freedesktop.org。 - 乔纳森·德博因·波拉德 (2019)。
machine-id
。 小吃指南。 JdeBP 的软件。 - 乔纳森·德博因·波拉德 (2017)。
/etc/machine-id
。地名词典。 小吃指南。 JdeBP 的软件。 - dbus如何计算机器id?
- 为什么我的 systemd 日志在重新启动后不持久?
- 修改/etc/machine-id可以吗?
- 为什么我克隆的 Linux 虚拟机会争夺相同的 IP
答案2
通过谷歌快速搜索:
- /etc/机器 ID应该是唯一的,只有在重新安装机器时才会更改,但由 systemd 提供,许多系统没有
- /var/lib/dbus/机器 ID应该是独一无二的,并且应该更广泛地使用。这文档说如果硬件配置发生变化它也会改变,但在实践我认为只有重新安装机器才会改变
- 你可以用系统uuid,但是需要root,主板变了也会变
/var/lib/dbus/machine-id
似乎是大多数情况下的最佳方法。
进一步阅读: