La duda tiene su lógica: si root existe precisamente para las tareas de administración, ¿por qué casi todo el mundo configura su usuario normal con acceso a sudo en vez de dejar esa cuenta aparte y usar solo su cuando haga falta? La respuesta corta es que no es lo mismo «tener acceso puntual a privilegios» que «trabajar todo el día como root», y ahí está la clave de todo el asunto.
#Qué hace exactamente cada comando
su (de substitute user) te cambia por completo a otra cuenta, normalmente root, y te deja ahí dentro de una sesión abierta hasta que escribes exit. Para usarlo necesitas conocer la contraseña de la cuenta a la que quieres cambiar, es decir, la contraseña de root.
sudo funciona de forma distinta: ejecuta un único comando con privilegios elevados, pidiendo la contraseña de tu propio usuario, no la de root. Después de ese comando, vuelves a ser tu usuario normal sin necesidad de «salir» de ningún sitio, salvo que encadenes varios comandos dentro de la ventana de tiempo en la que sudo no vuelve a pedir contraseña (normalmente unos minutos).
#Entonces, ¿por qué sudo gana en la práctica?
Aquí está el motivo real por el que casi todas las distros modernas configuran el usuario principal con acceso a sudo en vez de activar la cuenta de root directamente:
- La contraseña de root nunca se comparte ni se usa a diario, así que si alguien roba tu contraseña de usuario normal, no tiene automáticamente la de root (en muchas distros como Ubuntu, la cuenta root ni siquiera tiene contraseña activa por defecto).
- Cada acción queda registrada con el usuario real que la ejecutó, lo que facilita muchísimo la auditoría en sistemas con varias personas con acceso.
- Es mucho más fácil cometer un error grave estando permanentemente «dentro» de una sesión de root que teniendo que anteponer
sudoa cada comando puntual, ese pequeño gesto obliga a pararte a pensar antes de ejecutar algo peligroso. - Se puede limitar con precisión qué usuarios pueden usar sudo y para qué comandos concretos, algo que con
sues mucho más de todo o nada.
#¿No sigue siendo un riesgo que tu usuario «normal» pueda volverse root?
Es una preocupación razonable, pero conviene matizarla: en un equipo de un solo usuario, esa persona ya es, de facto, la administradora del sistema. Reservar el rol de administrador exclusivamente para una cuenta root separada no añade una capa de seguridad real frente a un atacante que ya haya conseguido tu contraseña de usuario, porque en la mayoría de configuraciones esa misma contraseña es la que te da acceso a sudo.
Donde sí marca una diferencia de seguridad de verdad es en sistemas con varias cuentas: ahí, dar sudo solo a quien realmente necesita privilegios de administración (y no a todo el mundo) sigue siendo una práctica fundamental, y es exactamente lo que permite el archivo /etc/sudoers, donde se define usuario por usuario quién puede ejecutar qué.
| Aspecto | su |
sudo |
|---|---|---|
| Contraseña requerida | La de la cuenta destino (normalmente root) | La de tu propio usuario |
| Duración del acceso | Sesión completa hasta hacer exit |
Un comando (o varios durante unos minutos) |
| Registro de auditoría | Menos granular | Queda registrado qué usuario ejecutó qué |
| Control de permisos | Todo o nada | Configurable comando por comando en /etc/sudoers |
#La regla de oro, resumida en una frase
Nunca ha sido buena práctica trabajar el día a día directamente como root, y quien lo hace suele acabar aprendiendo por la vía dura por qué existe esa recomendación: basta con un comando mal escrito, un rm con la ruta equivocada o un script poco cuidadoso para causar un desastre del que no hay vuelta atrás. Usar sudo para tareas puntuales, manteniendo tu sesión diaria como usuario normal, ofrece exactamente el mismo poder cuando lo necesitas, pero con muchísimo menos margen para el desastre accidental.