¿Qué es el machine-id? Desde las páginas de man se define como un identificador exclusivo de la máquina. «Este debe considerarse confidencial y no debe exponerse en entornos que no sean de confianza» se encuentra escrito en la documentación, lo que de primeras nos presenta algunos problemas que he desarrollado más adelante.
Lo primero que hay que entender es que éste se genera en el momento de la instalación del sistema operativo sobre el hardware concreto. Cuando, como administradores de sistemas nos dedicamos a clonar discos, es común que éstos mantengan el mismo identificador, generado a partir del hardware inicial del primer elemento de la clonación. Esto puede provocar conflicto a posteriori, por ejemplo, cuando generamos una interfaz de red bridge, que generará la MAC a partir del machine-id, y podría ocasionar conflicto en la red por simultaneidad.
Lo segundo, quizá, es su uso. El uso que da systemd al machine-id parece ambiguo, sirviendo a:
- La creación de identificador de host DHCP (probablemente causando que varias máquinas peleen por la misma dirección IP en el servidor DHCP).
- GNOME almacena la configuración del diseño de pantalla firmada por el identificador.
- El gestor de arranque EFI de systemd-boot almacena los kernels de instalación del sistema operativo en un directorio con el nombre del identificador para evitar colisiones.
Aunque probablemente tenga más usos obtusos que no serán conocidos hasta estudiar profundamente el código.
El fichero que almacena dicho machine-id es /etc/machine-id. Observará que este valor también se almacena en /var/lib/dbus/machine-id y que existe un enlace simbólico entre los dos. Cualquier cambio en un archivo, se reflejará en el otro.
cat /etc/machine-id
35f7f8a5f915453782892638656ad9fd
cat /var/lib/dbus/machine-id
35f7f8a5f915453782892638656ad9fd
ls -l /var/lib/dbus/machine-id
lrwxrwxrwx 1 root root 15 nov 11 2021 /var/lib/dbus/machine-id -> /etc/machine-id
Como decíamos, el machine-id se genera aleatoriamente en la instalación del sistema utilizando la utilidad systemd-machine-id-setup, que llama a su vez a dbus-uuidgen. Cambiarlo manualmente es muy sencillo y puede hacerse desde cualquiera de las utilidades citadas:
sudo rm /etc/machine-id
sudo systemd-machine-id-setup
sudo rm /etc/machine-id
sudo dbus-uuidgen --ensure=/etc/machine-id