systemd presenta run0, un «clon» de sudo para reemplazar a sudo
systemd se ha convertido en el marco estándar empleado por la mayoría de las grandes distribuciones y también se ha consolidado como un software controvertido debido a que es capaz de implementar una gran variedad de componentes de distinto tipo. Una de las cosas que vendrán en el próximo lanzamiento mayor del framework es run0, que es en base un clon de sudo para systemd.
run0 ha sido anunciado por Lennart Poettering, creador de systemd y actual empleado de Microsoft, en un hilo que ha publicado en la red social Mastodon. El desarrollador reconoce la utilidad del actual sudo que se encuentra en la mayoría de las distribuciones Linux, pero que “tiene serios problemas. Es un binario SUID relativamente grande, es decir, un código privilegiado que los usuarios sin privilegios pueden invocar desde su propio contexto. Tiene un lenguaje de configuración complicado, complementos cargables (¡ldap!), coincidencias de nombres de host, etc”. A todo eso se suman otros factores como una superficie de ataque grande.
La presunta complejidad de sudo ha hecho que algunos hayan decidido desarrollar alternativas, de entre las que destaca doas, que tiene su origen en OpenBSD y destaca por simplificar mucho la herramienta y reducir la superficie de ataque a la vez que no dejar de ser un binario SUID.
Con el fin de evitar o al menos minimizar los presuntos inconvenientes de sudo, Lennart Poettering ha anunciado run0 de la siguiente manera: “Hay una nueva herramienta en systemd llamada ‘run0’. De hecho, no es una herramienta nueva, sino que es la herramienta ‘systemd-run’ que existe desde hace mucho tiempo, pero cuando se invoca con el nombre ‘run0’ (a través de un enlace simbólico) se comporta de manera muy parecida a un clon de sudo con una diferencia clave: ‘no’ es SUID. En lugar de eso, simplemente le pide al administrador de servicios que invoque un comando o shell bajo el UID del usuario objetivo. Asigna un nuevo PTY para eso 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 (bueno, es cierto que ‘propagamos’ $TERM
, pero esa es una excepción explícita, es decir, está en la lista de permitidos en lugar de en la lista de denegados). Se podría decir que ‘run0’ está más cerca del comportamiento de ‘ssh’ que de ‘sudo’ en muchos sentidos. Excepto que no se preocupa por el cifrado o la autenticación criptográfica, la administración de claves y demás, sino que depende de los mecanismos de identificación locales del kernel.”
“Al aislar los contextos y los recursos del cliente y el objetivo, eliminamos por completo otras clases de ataques. La herramienta también es mucho más divertida de usar que sudo. Por ejemplo, por defecto teñirá el fondo de la terminal en un tono rojizo mientras se esté operando con privilegios elevados. Se supone que esto actúa como un recordatorio amistoso de que aún no ha renunciado a los privilegios y marca la salida de todos los comandos que se ejecutaron con los privilegios adecuados.”
“Y dado que simplemente se llama a systemd-run con un nombre diferente, admite el parámetro --property=
que soporta systemd-run, es decir, que permite establecer configuraciones de servicio arbitrarias para el comando/sesión privilegiada invocada si lo desea”.
Teniendo en cuenta las palabras de Lennart Poettering, run0 apunta a no ser una implementación en systemd del sudo que conocemos en Linux, sino que será un software diferente que dará un resultado muy similar y que cumplirá con el mismo propósito. Y debido a que de base es systemd-run funcionando con otro nombre, se trata de una herramienta creada por y para systemd, o al menos esa es la conclusión lógica a la que se llega ciñéndonos a las palabras del empleado de Microsoft.
run0 estará presente en el futuro systemd 256, pero eso no quiere decir que las distribuciones pasen a usarlo directamente. De hecho, systemd tiene su propio gestor de arranque, systemd-boot, que en la actualidad es utilizado por muy pocas distribuciones y hasta Fedora, que es de facto la distribución de referencia del framework, sigue empleando GRUB, aunque eso podría cambiar en un futuro no muy lejano.
Lo que está claro es que la presencia de run0 volverá a encender el debate entre los defensores y detractores de systemd, con los primeros defendiendo la existencia de un marco que aporte integración, homogeneidad y consistencia y con los segundos argumentando que es un software demasiado complejo que quebranta de manera flagrante la filosofía Unix.
La entrada systemd presenta run0, un «clon» de sudo para reemplazar a sudo es original de MuyLinux