- systemd.index 中文手册
- systemd.directives 中文手册
- binfmt.d 中文手册
- bootctl 中文手册
- bootup 中文手册
- busctl 中文手册
- coredump.conf 中文手册
- coredumpctl 中文手册
- crypttab 中文手册
- daemon 中文手册
- dnssec-trust-anchors.d 中文手册
- environment.d 中文手册
- file-hierarchy 中文手册
- halt 中文手册
- hostname 中文手册
- hostnamectl 中文手册
- hwdb 中文手册
- journal-remote.conf 中文手册
- journal-upload.conf 中文手册
- journalctl 中文手册
- journald.conf 中文手册
- kernel-command-line 中文手册
- kernel-install 中文手册
- loader.conf 中文手册
- locale.conf 中文手册
- localectl 中文手册
- localtime 中文手册
- loginctl 中文手册
- logind.conf 中文手册
- machine-id 中文手册
- machine-info 中文手册
- machinectl 中文手册
- modules-load.d 中文手册
- networkctl 中文手册
- networkd.conf 中文手册
- nss-myhostname 中文手册
- nss-mymachines 中文手册
- nss-resolve 中文手册
- nss-systemd 中文手册
- os-release 中文手册
- pam_systemd 中文手册
- portablectl 中文手册
- resolvectl 中文手册
- resolved.conf 中文手册
- shutdown 中文手册
- sysctl.d 中文手册
- systemctl 中文手册
- systemd 中文手册
- systemd-analyze 中文手册
- systemd-ask-password 中文手册
- systemd-ask-password-console.service 中文手册
- systemd-backlight@.service 中文手册
- systemd-binfmt.service 中文手册
- systemd-bless-boot-generator 中文手册
- systemd-bless-boot.service 中文手册
- systemd-boot 中文手册
- systemd-boot-check-no-failures.service 中文手册
- systemd-cat 中文手册
- systemd-cgls 中文手册
- systemd-cgtop 中文手册
- systemd-coredump 中文手册
- systemd-cryptsetup-generator 中文手册
- systemd-cryptsetup@.service 中文手册
- systemd-debug-generator 中文手册
- systemd-delta 中文手册
- systemd-detect-virt 中文手册
- systemd-environment-d-generator 中文手册
- systemd-escape 中文手册
- systemd-firstboot 中文手册
- systemd-fsck@.service 中文手册
- systemd-fstab-generator 中文手册
- systemd-getty-generator 中文手册
- systemd-gpt-auto-generator 中文手册
- systemd-halt.service 中文手册
- systemd-hibernate-resume-generator 中文手册
- systemd-hibernate-resume@.service 中文手册
- systemd-hostnamed.service 中文手册
- systemd-hwdb 中文手册
- systemd-id128 中文手册
- systemd-importd.service 中文手册
- systemd-inhibit 中文手册
- systemd-initctl.service 中文手册
- systemd-journal-gatewayd.service 中文手册
- systemd-journal-remote.service 中文手册
- systemd-journal-upload.service 中文手册
- systemd-journald.service 中文手册
- systemd-localed.service 中文手册
- systemd-logind.service 中文手册
- systemd-machine-id-commit.service 中文手册
- systemd-machine-id-setup 中文手册
- systemd-machined.service 中文手册
- systemd-makefs@.service 中文手册
- systemd-modules-load.service 中文手册
- systemd-mount 中文手册
- systemd-networkd-wait-online.service 中文手册
- systemd-networkd.service 中文手册
- systemd-notify 中文手册
- systemd-nspawn 中文手册
- systemd-path 中文手册
- systemd-portabled.service 中文手册
- systemd-quotacheck.service 中文手册
- systemd-random-seed.service 中文手册
- systemd-rc-local-generator 中文手册
- systemd-remount-fs.service 中文手册
- systemd-resolved.service 中文手册
- systemd-rfkill.service 中文手册
- systemd-run 中文手册
- systemd-run-generator 中文手册
- systemd-sleep.conf 中文手册
- systemd-socket-activate 中文手册
- systemd-socket-proxyd 中文手册
- systemd-suspend.service 中文手册
- systemd-sysctl.service 中文手册
- systemd-system-update-generator 中文手册
- systemd-system.conf 中文手册
- systemd-sysusers 中文手册
- systemd-sysv-generator 中文手册
- systemd-time-wait-sync.service 中文手册
- systemd-timedated.service 中文手册
- systemd-timesyncd.service 中文手册
- systemd-tmpfiles 中文手册
- systemd-tty-ask-password-agent 中文手册
- systemd-udevd.service 中文手册
- systemd-update-done.service 中文手册
- systemd-update-utmp.service 中文手册
- systemd-user-sessions.service 中文手册
- systemd-vconsole-setup.service 中文手册
- systemd-veritysetup-generator 中文手册
- systemd-veritysetup@.service 中文手册
- systemd-volatile-root.service 中文手册
- systemd.automount 中文手册
- systemd.device 中文手册
- systemd.dnssd 中文手册
- systemd.environment-generator 中文手册
- systemd.exec 中文手册
- systemd.generator 中文手册
- systemd.journal-fields 中文手册
- systemd.kill 中文手册
- systemd.link 中文手册
- systemd.mount 中文手册
- systemd.netdev 中文手册
- systemd.network 中文手册
- systemd.nspawn 中文手册
- systemd.offline-updates 中文手册
- systemd.path 中文手册
- systemd.preset 中文手册
- systemd.resource-control 中文手册
- systemd.scope 中文手册
- systemd.service 中文手册
- systemd.slice 中文手册
- systemd.socket 中文手册
- systemd.special 中文手册
- systemd.swap 中文手册
- systemd.syntax 中文手册
- systemd.target 中文手册
- systemd.time 中文手册
- systemd.timer 中文手册
- systemd.unit 中文手册
- sysusers.d 中文手册
- timedatectl 中文手册
- timesyncd.conf 中文手册
- tmpfiles.d 中文手册
- udev 中文手册
- udev.conf 中文手册
- udevadm 中文手册
- user@.service 中文手册
- vconsole.conf 中文手册
machine-id 中文手册
名称
machine-id — 本机"machine ID"配置文件
大纲
/etc/machine-id
描述
/etc/machine-id
文件包含一个在安装或首次启动操作系统时生成的、专属于本系统的、独一无二的"machine ID"。"machine ID"是一个32字符长度的十六进制小写字母字符串,并以换行符结尾。其本质是一个128位二进制整数的16进制表示。注意,"machine ID"不能为全零值。
"machine ID"通常在系统安装或首次启动时从一个随机数源生成,并且之后无论经过多少次开关机,也一直保持不变。另一方面,对于无状态系统,如果有必要,将在系统启动的早期自动随机生成一个"machine ID"。
"machine ID"可以通过内核引导选项systemd.machine_id=
来设置(例如用于网络启动),也可以通过systemd 的 --machine-id=
选项来设置。这两种方法设置的"machine ID"优先级都高于存储在/etc/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 就提供了一种安全散列算法的实现。
初始化
每台机器都应该具有一个独一无二的非空"machine ID"。为了达到这个目标,可以使用多种不同的方法初始化/etc/machine-id
文件。
一般来说,/etc/machine-id
应该在操作系统安装过程中完成初始化。
systemd-machine-id-setup(1)工具可以在安装操作系统时初始化"machine ID"。当然,使用其他方法初始化/etc/machine-id
也是可以的。
对于一次创建、多处使用的操作系统镜像(例如容器或云主机),其中的/etc/machine-id
应该是一个空文件。这样,即使镜像是只读的,也可以在此空文件之上绑定挂载一个临时文件。在镜像的实例系统启动过程中,将会自动生成一个"machine ID",并尽可能永久保存到的 /etc/machine-id
中。
systemd-firstboot(1)可以用于初始化已挂载(但未启动)的操作系统镜像的 /etc/machine-id
文件。
所有使用systemd(1)的系统都必须拥有"machine ID"。如果指定了 systemd.machine_id=
或 --machine-id=
选项(见"描述"小节),那么使用指定的"machine ID",否则使用 /etc/machine-id
中的"machine ID"。如果 /etc/machine-id
为空或不存在,那么将会依次尝试 /var/lib/dbus/machine-id
中的值、内核命令行选项 container_uuid
的值、 KVM DMIproduct_uuid
的值(KVM系统)、随机生成的UUID 值。
确定"machine ID"之后,systemd(1)将会尝试将其写入 /etc/machine-id
文件中,如果写入失败,将会继续尝试在 /etc/machine-id
之上绑定挂载一个临时文件并写入。如果文件系统为只读并且不包含/etc/machine-id
文件,那么将会导致错误。
如果 /etc/machine-id
在系统启动的早期处于只读状态,但随后变为可写,那么systemd-machine-id-commit.service(8)将会在 /etc/machine-id
文件变为可写之后,尝试将"machine ID"写入其中。
与 OSF UUID 的关系
"machine ID"符合RFC4122 规范(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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论