Cómo gestionar servicios enmascarados en Linux: Cómo ocultar y mostrar servicios systemD
¿Alguna vez intentaste iniciar o detener un servicio en Linux utilizando el comando systemctl
solo para ver una advertencia como esta?:
Error al iniciar postgresql.service: La unidad postgresql.service está enmascarada
Sabes que instalaste el servidor de base de datos Postgresql y que funcionaba correctamente, pero de alguna manera ya no tienes control sobre el servicio. No puedes gestionarlo de ninguna manera. ¿Qué sucedió?
En primer lugar, las máscaras son una forma diferente de deshabilitar un servicio. Aquí está la diferencia: cuando deshabilitas un servicio con sudo systemctl disable
, se eliminan todos los enlaces simbólicos del servicio. Cuando enmascaras un servicio, los enlaces simbólicos se mueven y apuntan a /dev/null. Cuando simplemente deshabilitas un servicio, aún se puede iniciar manualmente. Cuando enmascaras un servicio, no se puede iniciar manualmente. En otras palabras, enmascarar un servicio hace que el servicio sea permanentemente inutilizable hasta que se desenmascare.
Esto podría tener implicaciones de seguridad potenciales. Por ejemplo, supongamos que instalas un software con un servicio de systemd y descubres que existe una vulnerabilidad en el servicio. Es posible que no quieras eliminar la aplicación, pero definitivamente no quieres que se ejecute hasta que se corrija la vulnerabilidad. Podrías enmascarar el servicio, esperar a que se solucione la vulnerabilidad, parchear el software y desenmascarar el servicio.
Una cosa a tener en cuenta es que a veces un servicio puede terminar siendo enmascarado por la instalación de otro software. Con esto en mente, ¿cómo puedes saber si un servicio está enmascarado? Puedes utilizar un comando como este:
Cómo crear una lista en Microsoft 365 utilizando datos de Excelsystemctl list-unit-files | grep enmasc
Ejecuta el comando anterior y probablemente te sorprenderás de cuántos servicios están enmascarados en tu sistema. Encontré 23 servicios enmascarados en mi instancia de Pop!_OS, uno de los cuales era mysql.service. Si quiero usar MySQL en esa máquina, primero tendré que desenmascarar el servicio.
Cómo enmascarar un servicio en Linux
Lo primero que haremos es aprender cómo enmascarar un servicio en Linux. Sigamos con nuestro ejemplo de MySQL. Abre una ventana de terminal y enmascara el servicio MySQL con el siguiente comando:
sudo systemctl mask mysql
Si MySQL no estaba enmascarado previamente, ahora aparecerá así si vuelves a ejecutar el comando systemctl list-unit-files | grep enmasc
. En este punto, el servicio MySQL no puede iniciar automáticamente ni manualmente. Intenta iniciar el servicio con el siguiente comando:
sudo systemctl start mysql
Deberías ver el error:
Error al iniciar mysql.service: La unidad mysql.service está enmascarada
Cómo desenmascarar un servicio en Linux
Ahora que has enmascarado un servicio, ¿cómo lo desenmascaras? Como probablemente habrás adivinado, el comando sería:
sudo systemctl unmask mysql
Ahora, cuando inicies MySQL, funcionará como se espera.
Y ahí lo tienes, casi todo lo que necesitas saber para gestionar servicios enmascarados en Linux. Es posible que no necesites esta habilidad a diario, pero estarás contento de tenerla cuando llegue el momento.
Cómo utilizar las colecciones de Microsoft Edge para organizar tus marcadoresEn Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Software, allí encontraras muchos artículos similares a Cómo gestionar servicios enmascarados en Linux: Cómo ocultar y mostrar servicios systemD , tenemos lo ultimo en tecnología 2023.
Artículos Relacionados