sudo vs sudo-rs: qué cambia con la versión de sudo en Rust

Resumen de las diferencias entre sudo-rs y el sudo clásico, el cambio predeterminado de Ubuntu 25.10, lo que notarán los usuarios comunes y los problemas de compatibilidad que deben revisar los administradores.

sudo es uno de los comandos más familiares para los usuarios de Linux. Permite que un usuario normal ejecute temporalmente comandos con privilegios más altos dentro de un alcance autorizado, por ejemplo instalar software, cambiar la configuración del sistema o reiniciar servicios.

Recientemente, sudo-rs ha recibido más atención porque Ubuntu 25.10 empieza a usar de forma predeterminada la implementación en Rust sudo-rs para sustituir al sudo clásico. Para los usuarios comunes, en la superficie se sigue escribiendo sudo. El cambio real está por debajo: la implementación que se ejecuta puede ser ya la versión de sudo escrita en Rust.

Esto plantea dos preguntas naturales:

  • ¿Hay algún problema con el sudo clásico?
  • ¿Afectará sudo-rs al uso diario y a la configuración de servidores?

La conclusión breve es: los usuarios de escritorio comunes básicamente no tienen que preocuparse; si mantienes servidores, has escrito reglas sudoers complejas o dependes de comportamientos especiales de sudo, conviene probarlo con cuidado.

Qué es sudo-rs

sudo-rs es una implementación de sudo / su escrita en Rust. Su objetivo no es crear un comando nuevo completamente distinto, sino reimplementar las funciones principales del sudo clásico mientras aprovecha las propiedades de seguridad de memoria de Rust para reducir riesgos de seguridad habituales.

El sudo clásico está escrito principalmente en C. Tiene una larga historia y un conjunto de funciones muy completo. Esa madurez aporta estabilidad, pero también carga de mantenimiento. Gran parte del código viene de escenarios Unix/Linux muy antiguos, y con el tiempo se le añadieron muchas rutas de compatibilidad, extensiones y tratamientos de casos límite.

sudo-rs opta por reimplementarlo por varias razones:

  • reducir problemas de seguridad de memoria con Rust;
  • usar una estructura de código más moderna para facilitar el mantenimiento;
  • eliminar algunas funciones históricas y comportamientos predeterminados de alto riesgo;
  • atraer a nuevos colaboradores familiarizados con Rust;
  • proporcionar una base más fácil de auditar para futuras herramientas de elevación de privilegios.

Sin embargo, sudo-rs no es un reemplazo 100% compatible del sudo clásico. Todavía está en desarrollo. Algunas funciones tradicionales aún no se han implementado, y otras quizá nunca se implementen.

Qué notarán los usuarios comunes

Para los usuarios comunes, cambia muy poco.

Se sigue usando así:

1
sudo apt update

O así:

1
sudo systemctl restart nginx

En Ubuntu 25.10, sudo apunta a sudo-rs. Los usuarios no tienen que cambiar el comando a sudo-rs, y las llamadas habituales a sudo en scripts no deberían fallar inmediatamente por un cambio de nombre del comando.

El cambio más visible es la retroalimentación al escribir la contraseña. sudo-rs muestra asteriscos de forma predeterminada mientras se introduce la contraseña. El sudo clásico también puede configurarse para comportarse así, pero muchas distribuciones no muestran ningún carácter por defecto.

Algunos mensajes de error y advertencia también pueden tener textos distintos. Por ejemplo, los fallos de contraseña, los problemas de permisos o una configuración incompatible pueden mostrar avisos que no son exactamente iguales a los anteriores. Esto afecta poco a los usuarios humanos, pero si algunos scripts analizan la salida de error de sudo, habrá que revisarlos.

Qué deben vigilar los administradores

Quienes realmente deben prestar atención son los administradores de sistemas y los usuarios avanzados.

El ecosistema del sudo clásico es grande, y muchos servidores tienen configuraciones sudoers complejas. Estas configuraciones pueden incluir coincidencia de argumentos de comandos, control de variables de entorno, registros, notificaciones por correo, comportamiento de PAM y políticas para distintos grupos de hosts.

sudo-rs tiene actualmente algunas diferencias frente al sudo clásico. Por ejemplo, el artículo original señala que sudo-rs no incluye el soporte de sendmail del sudo clásico. Algunos entornos usaban sendmail para enviar notificaciones de uso de sudo, y esas configuraciones necesitarán otra solución al migrar.

En autenticación, sudo-rs usa PAM. Esto significa que comportamientos como límites de recursos y umask deberían configurarse más a través de PAM, en lugar de depender por completo del archivo sudoers. Si antes gestionabas muchos detalles en sudoers, verifica antes del cambio que esas reglas sigan funcionando.

Otro cambio importante es el soporte de comodines en posiciones de argumentos de comando. sudo-rs no admite comodines en argumentos de comandos para evitar errores comunes de configuración en archivos sudoers. Esto es bueno para la seguridad, pero puede afectar a reglas existentes.

Cómo maneja Ubuntu sudo y sudo-rs

A partir de Ubuntu 25.10, el sistema usa sudo-rs de forma predeterminada. Los usuarios siguen escribiendo sudo, mientras por debajo se ejecuta la implementación en Rust.

El sudo clásico no desaparece de inmediato. Durante la transición de Ubuntu, el sudo clásico se conserva como sudo-ws. Si realmente necesitas la implementación tradicional, puedes usar sudo-ws o cambiar el sudo predeterminado mediante el mecanismo de alternatives.

El comando de cambio se parece a este:

1
sudo update-alternatives --config sudo

Dicho esto, no se recomienda que los usuarios comunes vuelvan activamente al sudo clásico. Si no has personalizado sudoers y no dependes de comportamientos especiales, seguir la opción predeterminada de la distribución es más sencillo.

Si quieres probarlo en versiones anteriores de Ubuntu, sudo-rs está disponible desde Ubuntu 24.04 en el repositorio universe. Otras distribuciones también pueden ofrecer paquetes, pero los nombres de comandos y la integración pueden variar.

Por qué sudo-rs usa Rust

sudo es una herramienta de altos privilegios. Si una herramienta de este tipo tiene una vulnerabilidad, las consecuencias pueden ser mucho más graves que en un comando común. Históricamente, sudo también ha tenido varias vulnerabilidades de elevación de privilegios.

La ventaja de Rust es la seguridad de memoria. Mediante ownership, borrow checking y el sistema de tipos, reduce problemas comunes como punteros colgantes, accesos fuera de límites y use-after-free. Esto no garantiza que el programa sea absolutamente seguro, pero puede reducir una clase de vulnerabilidades muy común en proyectos C/C++.

Para una herramienta como sudo, que lleva mucho tiempo en una posición sensible de seguridad, reescribirla en un lenguaje más seguro tiene sentido práctico. No es “Rust por Rust”, sino un intento de reducir los costes de mantenimiento y auditoría.

Por supuesto, el lenguaje no resuelve todos los problemas de seguridad. La lógica de comprobación de permisos, el análisis de configuración, la interacción con PAM, el manejo de variables de entorno, los registros y la experiencia de usuario siguen requiriendo un diseño riguroso y pruebas prolongadas.

sudo-rs no es la única alternativa

En el ecosistema de sudo siempre ha habido otras alternativas.

Un ejemplo común es doas. Procede de OpenBSD y está diseñado para ser más simple, con una superficie de configuración más pequeña. Algunos usuarios lo prefieren porque no es tan complejo como sudo.

También existen algunas alternativas relacionadas con Rust o systemd, como RootAsRole y run0 de systemd. Sin embargo, estas herramientas no tienen exactamente los mismos objetivos ni los mismos escenarios de uso.

Para la mayoría de distribuciones Linux, sudo sigue siendo la opción predeterminada. La importancia de sudo-rs es que intenta mantener los hábitos de los usuarios mientras sustituye la implementación subyacente por una base de código más moderna.

Qué revisar antes de migrar

Si solo eres un usuario de escritorio personal, puedes seguir la configuración predeterminada de la distribución.

Si mantienes servidores o estaciones de trabajo, conviene revisar estos puntos:

  1. Si existen reglas complejas en /etc/sudoers o /etc/sudoers.d/.
  2. Si se usan comodines en argumentos de comandos.
  3. Si se depende de notificaciones de correo de sudo.
  4. Si hay scripts que analizan la salida de error de sudo.
  5. Si sudoers controla umask, límites de recursos o variables de entorno.
  6. Si existen integraciones de autenticación con LDAP, PAM, SSSD u otros sistemas.
  7. Si scripts de automatización o despliegue asumen el comportamiento del sudo clásico.

Primero puedes verificarlo en una máquina de pruebas:

1
sudo -l

Después ejecuta los comandos clave de mantenimiento y confirma que permisos, variables de entorno y registros se comporten como esperas.

¿Deberías cambiar manualmente a sudo-rs?

Si tu distribución ya lo usa de forma predeterminada, los usuarios comunes pueden aceptarlo directamente. Si usas un servidor o un entorno de producción, no conviene reemplazar sudo manualmente solo para experimentar.

Un proceso más prudente sería:

  • instalar sudo-rs en un entorno de pruebas;
  • verificar punto por punto la configuración sudoers existente;
  • revisar PAM, registros, auditoría y scripts de automatización;
  • confirmar la ruta de reversión;
  • migrar después de que la distribución ofrezca una integración estable.

Este tipo de herramienta está en la cadena de privilegios, así que no basta con juzgarla por si puede ejecutar unos cuantos comandos. La verdadera validación está en las condiciones de borde y en los casos de fallo.

Resumen

sudo-rs es una implementación en Rust del sudo clásico, cuyo objetivo es mantener las funciones principales de sudo sobre una base de código más moderna y segura. Que Ubuntu 25.10 lo active por defecto muestra que las distribuciones principales están empezando a impulsar seriamente esta dirección.

Para los usuarios comunes, el cambio es pequeño. Sigues escribiendo sudo; solo puede haber cambiado la implementación subyacente a sudo-rs. Como mucho, notarás asteriscos al escribir la contraseña o mensajes de error ligeramente distintos.

Para los administradores de sistemas, la clave es la compatibilidad. Si el sistema tiene reglas sudoers complejas, notificaciones sendmail, integración PAM, comodines en argumentos o scripts que dependen de la salida de sudo, hay que probar antes de actualizar.

Reescribir en Rust no es una cura mágica, pero para una herramienta sensible de seguridad como sudo, reducir riesgos de seguridad de memoria y complejidad de mantenimiento es una dirección que merece atención.

Referencias:

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy