Comparado con el arranque legacy al que todos estábamos acostumbrados, systemd cuenta con funcionalidades interesantes y necesarias debido a su arquitectura y funcionamiento. Una de ellas es el masking de units, o enmascaramiento/bloqueo de servicios.
En systemd, si deshabilitamos un servicio (unit), no significa que ese servicio no vaya a iniciarse. Si forma parte de las dependencias de otro servicio que sí está habilitado, systemd automáticamente lo iniciará cuando corresponda por dependencias, independientemente de que esté deshabilitado o no.
# systemctl disable sshd.service
Nosotros, bajo nuestra propia responsabilidad, y sobre todo, sabiendo que el servicio no es dependencia de otros que sí están activos, tenemos la opción de bloquear ese servicio (mask) para que no se pueda iniciar, incluso aunque forme parte de las dependencias de otro servicio (units).
Las dependencias de un servicio se pueden visualizar con el siguiente comando:
$ systemctl list-dependencies sshd.service ├─system.slice └─basic.target ├─microcode.service ├─rhel-autorelabel-mark.service ├─rhel-autorelabel.service [...]
Para enmascarar un servicio:
# systemctl mask sshd.service
# systemctl list-unit-files kmod-static-nodes.service static ldconfig.service static mandb.service static sshd.service masked rc-local.service static [...]
Si lo quisieramos arrancar tras este cambio:
# systemctl start sshd.service Failed to start sshd.service: Unit sshd.service is masked.
Para desenmascarar el servicio:
# systemctl unmask sshd.service