3 ms·
OK, from the man page: > The /etc/machine-id file contains the unique machine ID of the local system that is set during installation. The machine ID is a singl
by mirimir 8y ago
OK, from the man page:
> The /etc/machine-id file contains the unique machine ID of the local system that is set during installation. The machine ID is a single newline-terminated, hexadecimal, 32-character, lowercase ID. When decoded from hexadecimal, this corresponds to a 16-byte/128-bit value.
> The machine ID is usually generated from a random source during system installation and stays constant for all subsequent boots. Optionally, for stateless systems, it is generated during runtime at early boot if it is found to be empty.
So if that works for "stateless systems", why can't all machines be "stateless systems"?
- deleted 8y ago[deleted]
- dmurray 8y agoIt's not clear that would make anyone happy. You might really want to track machines in your fleet, in a way that persists across reboots. Let's say you can access a machine remotely but you got all your ethernet cables tangled up, so you don't know which physical machine you SSHed into. Or if you are being concerned about being tracked by a third party, you don't want this identifier to exist at all, even if it doesn't persist through reboots. I agree there are other solutions in both cases.
- patrickg_zill 8y agoSo basically deleting the file as the last step before a shut down or reboot will work, is that correct?
- mirimir 8y agoI'll test that. Edit: OK, so I created a Debian VM, noted /etc/machine-id, deleted it, and rebooted. And found that it was still missing. Running systemd-machine-id-setup generated a new machine-id from the D-Bus machine ID. And it was the same as the initial one. But I also see in man machine-id: > The machine-id may also be set, for example when network booting, by setting the systemd.machine_id= kernel command line parameter or passing the option --machine-id= to systemd. A machine-id may not be set to all zeros.
- patrickg_zill 8y agoDoes something like dd if=/dev/urandom bs=1 count=16 | hexdump Give you something that you can use?
- mirimir 8y agoWell, the machine-id of that Debian VM was ... 38d05397c25548b4f4bda7751b5062 ... and ... $ FOO=`cat /dev/urandom | tr -dc a-z0-9 | head -c${1:-30}` $ echo $FOO 6we4gvnmx00w208ffty6i11m82rw6d But I have no clue whether systemd would be happy with that. Maybe later I can test more. Edit: Oops. Make that ... $ FOO=`cat /dev/urandom | tr -dc abcdef0-9 | head -c${1:-30}` $ echo $FOO b486935dbb9e9fe603328a19e2b5b4
- deleted 8y ago[deleted]
- justinclift 8y agoMaybe use pwgen? Something like: $ pwgen -1s 31 qHfKU46H2RA2WUr0EZ1zBHfIBLKZKuT
- mirimir 8y agoI think that it needs to be hexadecimal. But not sure.
- justinclift 8y agoNo worries. :)
- JdeBP 8y agoIncorrect. Machine IDs are stored in several places, some of which are not even files. * http://jdebp.uk./Softwares/nosh/guide/commands/machine-id.xml#STORAGE http://jdebp.uk./Softwares/nosh/guide/commands/machine-id.xm... They can be resurrected if not all storage locations are dealt with. Moreover, some systems use things like the SMBIOS product UUID. * http://jdebp.uk./Softwares/nosh/guide/commands/setup-machine-id.xml#FALLBACKS http://jdebp.uk./Softwares/nosh/guide/commands/setup-machine... The correct approach is not deleting files. * http://jdebp.uk./Softwares/nosh/guide/commands/erase-machine-id.xml http://jdebp.uk./Softwares/nosh/guide/commands/erase-machine... * https://lists.debian.org/debian-user/2019/03/msg00550.html https://lists.debian.org/debian-user/2019/03/msg00550.html
- mirimir 8y agoThanks. So at boot, one would run "erase-machine-id". Then create a random 30-character hexadecimal number. And then either set "the systemd.machine_id= kernel command line parameter" to it. Or pass it via "the option --machine-id= to systemd".
- JdeBP 8y agoNo. % system-control cat machine-id start:#!/bin/nosh start:true stop:#!/bin/nosh stop:envdir env stop:erase-machine-id run:#!/bin/nosh run:#Set up and tear down the machine ID run:envdir env run:setup-machine-id restart:#!/bin/sh restart:exec false # ignore script arguments %
- mirimir 8y agoOK, thanks. So "setup-machine-id". Does that generate a value that's unrelated to any preexisting versions, analogs, etc? I ask because, when I deleted /etc/machine-id and ran "systemd-machine-id-setup", it generated a new machine-id by copying the D-Bus machine ID.
- tinus_hn 8y agoBecause then Google doesn’t have a persistent identifier to track you, of course.