Systemd ha revolucionado la forma en que se inician y gestionan los servicios en los sistemas operativos basados en Linux. Este sistema de inicio, conocido por algunos como controvertido pero por muchos como fundamental, ha evolucionado para convertirse en el motor principal detrás del arranque y la administración de servicios en numerosas distribuciones Linux modernas.
¿Qué es Systemd?
Systemd es un sistema de inicio y administración de servicios para sistemas operativos basados en Linux. Fue desarrollado por Lennart Poettering y Kay Sievers con el objetivo de mejorar la velocidad y eficiencia del proceso de inicio de Linux, así como también de proporcionar un marco unificado para la gestión de servicios del sistema.
Puede leer también | Linux antiX 21 : Lanzado sin Systemd y basado en Debian "Bullseye".
Antes de Systemd, los sistemas Linux utilizaban el init system, que era más simple pero menos eficiente en términos de manejo avanzado de servicios. Systemd introdujo conceptos como la paralelización del inicio de servicios, el uso de sockets para la activación de servicios bajo demanda, y la integración de la administración de servicios con otras partes del sistema, como el registro de eventos y la gestión de sesiones de usuario.
Principales Características de Systemd
-
Arranque Paralelo: Systemd permite iniciar servicios de forma paralela, lo que acelera significativamente el tiempo de arranque del sistema, especialmente en sistemas con múltiples núcleos de CPU.
-
Activación Bajo Demanda: Los servicios en Systemd pueden ser activados solo cuando son necesarios, lo que reduce la carga en el sistema y mejora la eficiencia de los recursos.
-
Gestión de Dependencias: Systemd gestiona automáticamente las dependencias entre servicios, asegurando que se inicien en el orden correcto y que los servicios requeridos estén disponibles antes de iniciar un servicio dependiente.
-
Registro de Eventos: Systemd proporciona un registro centralizado de eventos del sistema, facilitando la monitorización y el diagnóstico de problemas.
-
Integración con Otros Componentes: Systemd se integra con otros componentes del sistema, como udev para la gestión de dispositivos y journald para el registro de eventos, proporcionando una solución integral para la administración del sistema.
Systemd el anuncio de run0
Sin duda que systemd se ha vuelto el estándar utilizado por la mayoría de las principales distribuciones y también ha ganado notoriedad como un software polémico debido a su capacidad para implementar una amplia gama de componentes diversos. Uno de los próximos lanzamientos importantes del framework incluirá run0, una herramienta que es esencialmente una versión de sudo diseñada para systemd.
Puede leer también | Sistema Init de Linux: Explorando Systemd y sus funciones
El anuncio de run0 fue realizado por Lennart Poettering, creador de systemd y actualmente empleado por Microsoft, en un hilo que publicó en la red social Mastodon. Poettering reconoce la utilidad de sudo, presente en la mayoría de las distribuciones Linux, pero señala que este tiene ciertos problemas significativos. Sudo es un binario SUID relativamente grande, lo que significa que es un código privilegiado que los usuarios no privilegiados pueden invocar desde su propio contexto. Además, cuenta con una configuración compleja, admite complementos cargables (incluido ldap), realiza coincidencias de nombres de host, entre otros aspectos que aumentan su superficie de ataque.
La aparente complejidad de sudo ha llevado a algunos a desarrollar alternativas, como doas, originada en OpenBSD, que se destaca por simplificar la herramienta y reducir su superficie de ataque, sin dejar de ser un binario SUID.
Puede leer también | Microsoft añade 'systemd' al subsistema Windows para Linux
Con el objetivo de evitar o al menos minimizar los inconvenientes percibidos de sudo, Poettering ha presentado run0 de la siguiente manera: "Hay una nueva herramienta en systemd llamada 'run0'. En realidad, no es una herramienta nueva, sino que es la herramienta 'systemd-run' que ha existido durante mucho tiempo, pero cuando se invoca con el nombre 'run0' (a través de un enlace simbólico), se comporta de manera muy similar a sudo con una diferencia clave: no es SUID. En lugar de eso, simplemente solicita al administrador de servicios que invoque un comando o shell bajo el UID del usuario objetivo. Crea un nuevo PTY para ello y luego transfiere datos de un lado a otro del TTY de origen y este PTY."
"En otras palabras: el comando de destino se invoca en un contexto de ejecución aislado, recién bifurcado del PID 1, sin heredar ningún contexto del cliente. Se podría decir que 'run0' se asemeja más al comportamiento de 'ssh' que a 'sudo' en muchos aspectos, excepto que no se preocupa por el cifrado o la autenticación criptográfica, la administración de claves, etc., sino que depende de los mecanismos de identificación locales del kernel."
Puede leer también | Ubuntu WSL : Systemd dentro del subsistema de Windows para Linux
Según las declaraciones de Lennart Poettering, run0 está diseñado para no ser una versión de sudo dentro de systemd como la conocemos en Linux, sino que será un software distinto que logrará un resultado muy similar y cumplirá el mismo propósito. Al ser esencialmente systemd-run con un nombre diferente, se entiende que es una herramienta creada específicamente para systemd, al menos esa es la conclusión lógica basándonos en las palabras del empleado de Microsoft.
La inclusión de run0 está prevista para la futura versión 256 de systemd, aunque esto no implica que las distribuciones comiencen a utilizarlo de inmediato. En realidad, systemd cuenta con su propio gestor de arranque, systemd-boot, que en la actualidad es adoptado por un número limitado de distribuciones. Incluso Fedora, que es prácticamente la distribución de referencia para el framework, sigue utilizando GRUB, aunque esto podría cambiar en un futuro cercano.