machine-id 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-235

名称

machine-id — 本机"machine ID"配置文件

大纲

/etc/machine-id

描述

/etc/machine-id 文件包含一个 在安装操作系统时生成的、专属于本系统的、独一无二的"machine ID"。 "machine ID"是一个32字符长度的十六进制小写字母字符串,并以换行符结尾。 其本质是一个128位二进制整数的16进制表示。

"machine ID"通常在系统安装时从一个随机数源生成, 并且之后无论经过多少次开关机,也一直保持不变。 另一方面,对于无状态系统,如果此文件为空, 将在系统启动的早期自动随机生成一个。

"machine ID"一旦生成应该永远保持不变,即使系统的软件、硬件、网络的配置发生了变化,也不应该修改它。 基于"machine ID"如此稳固的特性以及的足够的长度(不容易重复),可以将它用于取代 POSIX 系统调用 gethostid(3) 的功能。

这里的"machine ID"与"D-Bus machine ID" 遵守相同的格式与逻辑。

由于"machine ID"可以精确的标识主机, 因此它应该被视为"机密信息",不应该直接暴露在不可信环境中,特别是不应该暴直接露在不可信的网络环境中。 如果应用程序需要使用某种唯一标识符精确的标识主机, 那么不应该直接使用 "machine ID" ,而应该使用经过应用程序自身内置的安全散列算法转换之后的值。 这样可以确保使用同一种方式,安全的在不同主机之间传递唯一标识符,而不会泄露每台主机原本的 "machine ID" 。 sd_id128_get_machine_app_specific(3) API 就提供了这样一种算法的实现。

操作系统的安装程序可以在安装时使用 systemd-machine-id-setup(1) 工具来初始化"machine ID"。 可以使用 systemd-firstboot(1) 初始化已挂载(但未启动)的系统镜像的"machine ID"。

还可以通过 systemd.machine_id= 内核引导选项 或者 systemd 的 --machine-id= 命令行选项 来设置"machine ID"。这种方式经常用于网络启动的场景中。 注意,不可将"machine ID"设为全零值。

与 OSF UUID 的关系

"machine ID"符合 RFC 4122 规范(OSF v4 UUID), 同时也符合 Microsoft GUID 规范。

历史

/etc/machine-id 文件的格式源自D-Bus的 /var/lib/dbus/machine-id 文件。 实际上,/var/lib/dbus/machine-id 很可能就是指向 /etc/machine-id 的一个软连接。

参见

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)