Cómo acceder como root en Ubuntu

22min

En el universo Linux, el usuario root es sinónimo de poder absoluto. Es el equivalente al «administrador» en otros sistemas operativos, con la capacidad de realizar cualquier operación en el sistema, desde instalar software hasta eliminar archivos críticos. Sin embargo, en Ubuntu, la forma de acceder a estos privilegios es particular y responde a una filosofía de seguridad específica. Entender cómo y cuándo utilizar las capacidades del superusuario es esencial para mantener tu sistema seguro y funcional. Si estás trabajando en un servidor Cloud, VPS o servidor dedicado, este conocimiento te será de gran utilidad

Índice

¿Qué significa ser usuario root en Ubuntu?

Ser usuario root en Ubuntu (y en sistemas Linux en general) significa tener los máximos privilegios de acceso y modificación sobre el sistema operativo. Un usuario root puede acceder a cualquier archivo, ejecutar cualquier comando, instalar o desinstalar cualquier software y modificar la configuración más profunda del sistema. Es la cuenta con ID de usuario (UID) 0 y tiene control total sobre todos los procesos y recursos del sistema.

¿Está habilitado el superusuario o usuario root en Ubuntu por defecto?

Una de las particularidades de Ubuntu, en contraste con otras distribuciones de Linux (como Debian en algunas configuraciones por defecto), es que la cuenta del superusuario (root) no está habilitada para el inicio de sesión directo por defecto después de una instalación estándar. Esto es una medida de seguridad fundamental que Ubuntu implementa para proteger el sistema.

Política de seguridad en distribuciones basadas en Ubuntu

Por defecto, en Ubuntu, la cuenta del usuario root está deshabilitada para el inicio de sesión directo. Esto significa que no puedes iniciar sesión en la terminal o la interfaz gráfica directamente como root con una contraseña. Esta medida de seguridad reduce el riesgo de errores accidentales catastróficos o de ataques remotos de fuerza bruta directamente contra la cuenta más poderosa del sistema.

Uso de sudo como alternativa a root

En lugar de un inicio de sesión directo, Ubuntu promueve el uso del comando sudo (abreviatura de «superuser do»). Cuando ejecutas un comando con sudo (por ejemplo, sudo apt update), estás diciendo al sistema que ejecute ese comando con privilegios de root. Se te pedirá tu propia contraseña de usuario (no la de root) y solo los usuarios que pertenecen al grupo sudo pueden utilizar este comando. Esta es una capa de seguridad adicional que limita el tiempo y la exposición de los privilegios de root.

Cuándo conviene habilitar el acceso root directamente

En la mayoría de los escenarios de uso diario y administración de servidores, el uso de sudo es suficiente y preferible. Sin embargo, en situaciones muy específicas como la recuperación de un sistema dañado, el trabajo en entornos muy restringidos o la configuración de ciertos servicios que requieren un acceso más persistente de root, podría ser necesario habilitar el acceso directo. Aun así, se recomienda que sea una medida temporal y se desactive una vez finalizada la tarea.

Riesgos de usar el usuario root sin precaución

Operar como el usuario root en Ubuntu (o cualquier sistema Linux) sin la debida precaución conlleva riesgos significativos. La naturaleza de los privilegios ilimitados de root significa que cualquier error, ya sea accidental o malicioso, puede tener consecuencias graves para la estabilidad y seguridad del sistema.

Eliminación accidental de archivos del sistema

Uno de los peligros más inmediatos y catastróficos de usar el usuario root sin precaución es la eliminación accidental de archivos vitales del sistema. Debido a que root tiene permisos para escribir y eliminar en cualquier parte del sistema de archivos, no hay barreras de permisos que te detengan si cometes un error.

  • Errores tipográficos en comandos. Un simple error al escribir un comando de eliminación (rm) o movimiento (mv) con privilegios de root puede tener consecuencias devastadoras. Por ejemplo, sudo rm -rf / (eliminar recursivamente forzadamente el directorio raíz) es un comando notorio que, si se ejecuta accidentalmente como root, borrará todo el sistema de archivos sin pedir confirmación. Un espacio extra, un carácter omitido o una ruta incorrecta puede convertir un comando inofensivo en una sentencia de muerte para tus datos.
  • Ejecución de scripts no confiables. Ejecutar scripts descargados de fuentes no verificadas como root es extremadamente peligroso. Un script malicioso o incluso uno mal codificado puede contener comandos destructivos que, al ejecutarse con privilegios de root, pueden eliminar archivos, modificar configuraciones críticas o instalar software no deseado sin tu conocimiento.
  • Confusión de entornos. Trabajar simultáneamente en múltiples terminales o en diferentes servidores (uno de producción y uno de desarrollo) con privilegios de root aumenta el riesgo de ejecutar un comando en el entorno incorrecto, con resultados potencialmente desastrosos en el sistema en producción.
  • Falta de redundancia y recuperación. Cuando se eliminan archivos como root, no suelen ir a una «papelera de reciclaje» donde puedan ser recuperados fácilmente. Se eliminan de forma permanente del sistema de archivos. La recuperación de datos después de una eliminación accidental con privilegios de root a menudo requiere herramientas forenses complejas y no siempre es exitosa, resultando en la pérdida irrecuperable de información valiosa o la necesidad de reinstalar completamente el sistema operativo.

La precaución extrema, la doble verificación de los comandos antes de ejecutarlos con sudo (o como root) y la limitación del tiempo pasado como root son esenciales para mitigar este riesgo.

Vulnerabilidad frente a ataques de seguridad

El uso constante o descuidado del usuario root aumenta significativamente la vulnerabilidad de tu sistema Ubuntu frente a ataques de seguridad. Esto se debe a que un compromiso de la cuenta root o una escalada de privilegios a root por parte de un atacante les otorga control total sobre el sistema.

  • Punto único de fallo. Si un atacante logra obtener las credenciales de la cuenta root (por ejemplo, mediante un ataque de fuerza bruta, phishing o si la contraseña es débil y predecible) o si explota una vulnerabilidad en un servicio que se ejecuta con privilegios de root, no hay más barreras. Tienen control absoluto sobre todo el sistema: pueden instalar malware, crear puertas traseras, robar o cifrar datos, o incluso convertir tu máquina en parte de una botnet.
  • Exposición al malware. Si ejecutas accidentalmente un software malicioso (malware) o un script comprometido como root, el malware tendrá los mismos privilegios ilimitados que tú. Esto le permitiría infectar y persistir en el sistema de manera mucho más efectiva, modificando archivos del sistema, deshabilitando defensas de seguridad o exfiltrando información sensible sin restricciones de permisos.
  • Ataques de fuerza bruta en SSH. Si el acceso directo a root a través de SSH está habilitado y protegido solo por contraseña, tu servidor se convierte en un objetivo constante para ataques de fuerza bruta. Los atacantes intentarán adivinar la contraseña de root incansablemente. Si logran adivinarla, habrán ganado el acceso más privilegiado al sistema. Por esta razón, el inicio de sesión directo de root vía SSH está deshabilitado por defecto y, si se habilita, debe usarse con autenticación basada en claves SSH extremadamente segura.
  • Falta de segmentación. Al operar siempre como root, se elimina la segmentación de privilegios. Las aplicaciones o servicios que no necesitan privilegios elevados para funcionar normalmente obtienen permisos excesivos, lo que amplía la superficie de ataque. Si una de estas aplicaciones es comprometida, el atacante automáticamente hereda los privilegios de root.

La filosofía de sudo busca mitigar estos riesgos al limitar la exposición de la cuenta root y al obligar a los usuarios a pensar conscientemente antes de ejecutar comandos con privilegios elevados. Mantener el acceso directo a root deshabilitado y usar sudo de forma inteligente son prácticas esenciales para mantener la seguridad de tu sistema Ubuntu.

Falta de trazabilidad en los registros del sistema

Un riesgo significativo y a menudo subestimado de iniciar sesión directamente como el usuario root es la falta de trazabilidad detallada en los registros del sistema. Esta ausencia de un historial claro puede ser problemática tanto para la auditoría de seguridad como para la resolución de problemas.

  • Registros de actividad. Cuando un usuario normal ejecuta un comando con sudo, el sistema registra en el archivo /var/log/auth.log (o en el journalctl) no solo el comando ejecutado, sino también qué usuario (who) lo ejecutó y cuándo (when). Esto proporciona un rastro de auditoría invaluable. Si hay múltiples administradores, es fácil saber quién realizó un cambio específico. Si, por el contrario, se inicia sesión directamente como root, todos los comandos ejecutados se registrarán simplemente como ejecutados por el usuario «root». No hay forma inherente en los logs de saber qué persona física inició sesión como root y ejecutó un comando determinado. Esto dificulta enormemente la rendición de cuentas en entornos multiusuario.
  • Resolución de problemas. Si surge un problema en el sistema (por ejemplo, un servicio deja de funcionar o una configuración se corrompe), tener un registro detallado de los comandos sudo permite al administrador rastrear los cambios recientes y determinar qué acción pudo haber causado el problema. Esto acelera el diagnóstico y la resolución. Sin esta trazabilidad, la depuración se convierte en un proceso de adivinanzas, donde es difícil identificar la causa raíz de un incidente si varios administradores están trabajando en el mismo sistema o si se han ejecutado comandos complejos.
  • Auditoría y conformidad. Para entornos que requieren cumplir con estándares de seguridad o regulaciones (ejemplo: ISO 27001, PCI DSS), la trazabilidad completa de todas las acciones administrativas es a menudo un requisito obligatorio. El uso de sudo facilita el cumplimiento de estos requisitos. La falta de un rastro claro de auditoría de las acciones de root puede ser una bandera roja durante una auditoría de seguridad y puede indicar debilidades en los controles internos.

La imposibilidad de saber quién realizó una acción específica cuando se opera directamente como root es una deficiencia de seguridad y operativa. El comando sudo fue diseñado específicamente para mitigar este riesgo, proporcionando un historial de auditoría detallado y un modelo de responsabilidad claro para todas las acciones con privilegios elevados.

Formas de acceder como root en Ubuntu

Aunque Ubuntu desaconseja el inicio de sesión directo como root, ofrece varias maneras de acceder a sus privilegios cuando es necesario. Estas opciones varían en su nivel de permanencia y seguridad, siendo el uso temporal de sudo la práctica más recomendada.

Acceso temporal como root con sudo

La forma más común y segura es usar sudo. Para ejecutar un solo comando como root, simplemente prefíjalos con sudo:

sudo apt update

Si necesitas ejecutar varios comandos como root y no quieres teclear sudo cada vez, puedes obtener una shell de root temporal con:

sudo su –

O simplemente:

sudo -i

Ambos comandos te convertirán en root en la terminal actual, y verás que el símbolo del $ cambia a #. Para salir de esta sesión de root, simplemente teclea exit.

Iniciar sesión como root desde la terminal

Por defecto, como se mencionó, el usuario root en Ubuntu no tiene una contraseña asignada y no se puede iniciar sesión directamente en una terminal (TTY) o a través de la interfaz gráfica de usuario (GUI). Sin embargo, si le has asignado una contraseña al usuario root (lo cual no se recomienda a menos que sea estrictamente necesario y seas consciente de los riesgos), podrías teóricamente iniciar sesión.

Habilitar el inicio de sesión directo de root en una terminal interactiva o en el gestor de inicio de sesión gráfico aumenta significativamente el riesgo de seguridad. Si el equipo es comprometido físicamente o alguien puede ver la pantalla de inicio de sesión, la cuenta root es un objetivo directo.

Ubuntu desactiva esto por defecto precisamente por los riesgos de seguridad. La mayoría de los usuarios y administradores nunca deberían necesitar iniciar sesión directamente como root. El uso de sudo -i o sudo su desde una cuenta de usuario normal que tenga privilegios sudo es el método preferido y mucho más seguro para obtener una shell de root interactivo.

Si te encuentras en una situación donde consideras la necesidad de iniciar sesión directamente como root, es importante reconsiderar por qué es necesario y si no hay una alternativa más segura.

Habilitar el usuario root con contraseña propia

Puedes asignar una contraseña al usuario root, lo que lo «habilita» para un inicio de sesión directo, aunque, como se mencionó, Ubuntu lo desaconseja. Para hacerlo, abre una terminal y ejecuta:

sudo passwd root

Se te pedirá que introduzcas una nueva contraseña para el usuario root dos veces. Después de esto, la cuenta root tendrá una contraseña y técnicamente podrías intentar iniciar sesión directamente con ella (aunque por SSH o consolas virtuales esto suele estar restringido).

Comandos útiles para trabajar como root en Ubuntu

Trabajar con privilegios root en Ubuntu se realiza principalmente a través del comando sudo. Dominar sus diferentes variantes y usos es clave para una administración eficiente y segura del sistema.

sudo -i vs. sudo su

  • sudo -i. Es la forma más recomendada para obtener una shell de root. Simula un inicio de sesión de root completo, cargando el entorno de root (incluyendo su PATH y variables de entorno), lo que es crucial para algunos scripts y operaciones.
  • sudo su. También te convierte en root, pero a veces puede no cargar el entorno completo de root de la misma manera que sudo -i. Es una opción válida, pero sudo -i es generalmente preferible por su consistencia.

Ejecutar un solo comando como root

Esta es la forma más básica y frecuente de usar sudo en Ubuntu. Te permite elevar temporalmente tus privilegios para ejecutar un único comando con permisos de root, volviendo automáticamente a tu usuario normal una vez que el comando ha finalizado. La sintaxis es muy sencilla: simplemente antepones el comando que deseas ejecutar con sudo.

sudo [comando] [argumentos]

Ejemplos comunes:

  • Actualizar la lista de paquetes. Este es quizás el uso más común y fundamental. apt update requiere privilegios de root para acceder y modificar la base de datos de paquetes del sistema.

sudo apt update

  • Instalar un nuevo paquete. apt install también necesita permisos de root para escribir archivos en los directorios del sistema.

sudo apt install firefox

  • Reiniciar un servicio del sistema. Los servicios del sistema son gestionados por systemd (o SysVinit en sistemas antiguos) y requieren privilegios de root para ser iniciados, detenidos o reiniciados.

sudo systemctl restart apache2

  • Editar un archivo de configuración del sistema. Los archivos de configuración importantes (como los de red, servidor web, SSH, etc.) suelen estar protegidos y requieren permisos de root para ser modificados.

sudo nano /etc/ssh/sshd_config

Al usar sudo con un editor de texto como nano, vim o gedit, el editor se abre con permisos de root, permitiéndote guardar cambios en archivos protegidos.

Cambiar la contraseña del usuario root

Por defecto, la cuenta root en Ubuntu no tiene una contraseña asignada, lo que impide el inicio de sesión directo. Sin embargo, puedes asignarle una o cambiarla si ya la tiene, utilizando el comando passwd con privilegios sudo.

Asignar una contraseña a la cuenta root para permitir el inicio de sesión directo no es la práctica recomendada en Ubuntu y aumenta los riesgos de seguridad. La forma preferida de obtener privilegios de root es siempre a través de sudo. Solo cambia la contraseña de root si tienes un caso de uso muy específico y bien justificado y si comprendes y aceptas plenamente los riesgos.

Pasos para cambiar la contraseña del usuario root:

  1. Abre una terminal. Accede a la línea de comandos de tu sistema Ubuntu.
  2. Usa el comando passwd con sudo. Desde tu cuenta de usuario normal (la que tiene permisos sudo), ejecuta el siguiente comando: sudo passwd root
  3. Introduce tu contraseña de sudo. El sistema te pedirá primero la contraseña de tu usuario actual para verificar tus privilegios sudo.
  4. Introduce la nueva contraseña para root. Una vez que tu contraseña de sudo sea aceptada, el sistema te pedirá que introduzcas la nueva contraseña para el usuario root. La contraseña no se mostrará mientras escribes.
  5. Confirmación. Si las dos entradas coinciden y la contraseña es aceptable para el sistema (muchos sistemas tienen políticas de complejidad de contraseñas), verás un mensaje de éxito.

Cómo activar el acceso root en Ubuntu mediante SSH

Por defecto, la mayoría de las instalaciones de Ubuntu deshabilitan el acceso directo al usuario root vía SSH para aumentar la seguridad. Si necesitas habilitarlo (lo cual es un riesgo y debe hacerse con extrema precaución), sigue estos pasos:

  1. Habilita la contraseña de root. Primero, si no lo has hecho, asigna una contraseña al usuario root usando sudo passwd root.
  2. Edita la configuración de SSH. Abre el archivo de configuración de SSH con un editor de texto:

    sudo nano /etc/ssh/sshd_config

  3. Permite el login de root. Busca la línea PermitRootLogin (si existe, puede que esté comentada con #). Cambia su valor a yes.
  4. Reinicia el servicio SSH. Para que los cambios surtan efecto, reinicia el servicio SSH:

    sudo systemctl restart ssh

Habilitar el acceso directo de root por SSH es una vulnerabilidad importante. Es altamente recomendable mantenerlo deshabilitado y usar SSH con tu usuario normal y luego sudo o, mejor aún, usar autenticación basada en claves SSH en lugar de contraseñas.

Cómo desactivar el acceso root por seguridad

Desactivar el acceso directo a la cuenta root, especialmente a través de SSH es una medida de seguridad fundamental en Ubuntu. Esta práctica reduce significativamente la superficie de ataque de tu sistema. Si has habilitado el acceso directo a root y ya no lo necesitas o si estás configurando un nuevo servidor, te recomendamos que sigas estos pasos.

Deshabilitar el login directo de root

Para deshabilitar el inicio de sesión directo de root (si lo habías habilitado):

  1. Edita la configuración de SSH. Abre sudo nano /etc/ssh/sshd_config.
  2. Deniega el login de root. Cambia la línea PermitRootLogin yes a PermitRootLogin no. Si prefieres, puedes usar PermitRootLogin prohibit-password para permitir solo acceso con clave SSH para root.
  3. Reinicia el servicio SSH: sudo systemctl restart ssh.

También puedes bloquear la cuenta de root para que no se pueda usar para iniciar sesión (incluso localmente si tienes una contraseña):

sudo passwd -l root

Para desbloquearla, usa sudo passwd -u root

Reforzar el uso de sudoers

En lugar de permitir el acceso directo de root, enfócate en configurar el archivo /etc/sudoers para permitir que usuarios específicos realicen solo los comandos que necesitan con sudo, sin necesidad de una shell de root completa. Utiliza el comando sudo visudo para editar este archivo de forma segura.

Auditar accesos con privilegios elevados

Mantén un ojo en los registros del sistema (/var/log/auth.log o journalctl -xe) para detectar intentos de acceso sospechosos o el uso indebido de sudo. Configura herramientas de auditoría y monitoreo para recibir alertas sobre actividades con privilegios elevados.

Buenas prácticas al usar privilegios root en Ubuntu

Operar con privilegios de root es una responsabilidad significativa. Adherirse a las buenas prácticas es esencial para mantener la seguridad y la estabilidad de tu sistema Ubuntu. A continuación se muestran algunas de las mejores prácticas al usar privilegios root en Ubuntu.

Minimizar el tiempo de uso con privilegios elevados

El principio fundamental de la seguridad informática es el principio de privilegio mínimo. Esto significa que solo debes tener los permisos necesarios para realizar una tarea específica y solo por el tiempo que sea estrictamente indispensable. Cuando se trata del usuario root en Ubuntu, esto se traduce en:

  • Usa sudo para comandos individuales siempre que sea posible. Para la gran mayoría de las tareas administrativas, ejecutar un solo comando con sudo es suficiente. Una vez que el comando termina, tus privilegios elevados se retiran automáticamente. Esto limita la ventana de exposición a errores accidentales o a la explotación por parte de malware. Ejemplo: sudo apt update, sudo systemctl restart nginx.
  • Evita shells de root persistentes (ejemplo: sudo -i o sudo su) a menos que sea necesario. Si bien estos comandos son útiles para ejecutar múltiples comandos administrativos, intenta usarlos solo cuando sabes que vas a realizar una serie de tareas relacionadas que requieren privilegios de root. Sal del shell de root tan pronto como hayas terminado. Una vez que hayas completado tus tareas administrativas, es crucial que salgas del shell de root (exit o Ctrl + D) y regreses a tu usuario normal con privilegios limitados. Dejar una sesión de root abierta (especialmente en un terminal sin vigilancia) es un riesgo de seguridad importante.
  • No navegues por la web ni abras documentos sospechosos como root. Nunca uses un navegador web, un cliente de correo electrónico o cualquier otra aplicación que interactúe con contenido externo mientras estás en una sesión de root. Si un exploit se dirigiera a esa aplicación, el atacante obtendría automáticamente privilegios de root sobre tu sistema.

Minimizar el tiempo que pasas con privilegios elevados es la medida más sencilla y efectiva para reducir el riesgo de comprometer tu sistema Ubuntu, ya sea por errores humanos o por ataques externos.

No ejecutar scripts de fuentes no confiables como root

Esta es una regla de seguridad de oro en cualquier sistema Linux y es aún más crítica cuando se involucran privilegios de root. Ejecutar un script descargado de una fuente desconocida o no verificada con sudo (o directamente como root) es comparable a invitar a un desconocido a tu casa y darle las llaves. Se debe tener cuidado con:

  • Contenido malicioso oculto. Un script aparentemente inofensivo podría contener comandos maliciosos ocultos o lógica que, al ejecutarse con privilegios de root, podría eliminar archivos críticos del sistema, instalar software malicioso (rootkits, backdoors, keyloggers), modificar configuraciones del sistema para crear vulnerabilidades o dar acceso a un atacante, exfiltrar información sensible del sistema o del usuario y convertir tu máquina en parte de una botnet para realizar ataques contra otros.
  • Errores de codificación. Incluso un script no intencionalmente malicioso, si está mal codificado, puede causar daños significativos al sistema si se ejecuta con permisos ilimitados.

Prácticas de seguridad

  • Siempre inspecciona el código. Antes de ejecutar cualquier script descargado de Internet (especialmente si te dicen que lo ejecutes con sudo o como root), abre el script en un editor de texto y revisa cuidadosamente su contenido. Busca cualquier comando sospechoso, redirecciones inesperadas, o el uso de funciones desconocidas. Si no entiendes el código, no lo ejecutes.
  • Descarga de fuentes oficiales y confiables. Siempre que sea posible, descarga software y scripts solo de los repositorios oficiales de Ubuntu, del sitio web oficial del proyecto o de fuentes muy reputadas (ejemplo: GitHub de proyectos conocidos y activos).
  • Verifica la suma de verificación (Checksum). Si el desarrollador proporciona una suma de verificación (MD5, SHA256) para el script, úsala para verificar que el archivo que descargaste no ha sido alterado durante la descarga.
  • Prueba en un entorno aislado. Si tienes dudas sobre un script, prueba a ejecutarlo primero en un entorno aislado (como una máquina virtual o un contenedor Docker) que puedas destruir fácilmente si algo sale mal.
  • Usa el principio de privilegio mínimo para scripts. Si un script solo necesita permisos elevados para una parte específica de su ejecución, intenta modificarlo para que solo esa parte se ejecute con sudo, o delega la ejecución a un usuario con permisos más restringidos a través de sudoers (ver sección anterior).

La desconfianza es una virtud cuando se trata de ejecutar código de terceros, especialmente con privilegios de root. Un momento de descuido puede tener consecuencias devastadoras para la seguridad de tu sistema.

Usar sudo con usuarios específicos y configuraciones seguras

Más allá de simplemente agregar usuarios al grupo sudo, las buenas prácticas de seguridad implican un uso más granular y seguro del comando sudo mediante la configuración del archivo /etc/sudoers. Esto permite una administración más controlada de los privilegios elevados.

  • No confiar únicamente en el grupo sudo. Por defecto, Ubuntu permite a cualquier usuario en el grupo sudo ejecutar cualquier comando como root sin restricciones, siempre que conozcan su contraseña. Para entornos multiusuario o servidores críticos, esta configuración de «todo o nada» puede ser demasiado permisiva.
  • Configuración granular de sudoers. Utilizando el comando sudo visudo (siempre, para evitar errores de sintaxis que podrían bloquear sudo), puedes especificar exactamente qué usuarios o grupos pueden ejecutar qué comandos, y bajo qué condiciones.
  • Auditoría y monitoreo. Asegúrate de que los registros de sudo estén habilitados y monitoreados. Cada vez que un usuario ejecuta sudo, el comando se registra, proporcionando un historial crucial de las acciones administrativas.

La implementación de estas configuraciones seguras en /etc/sudoers permite a los administradores delegar tareas con mayor control, reducir la superficie de ataque y asegurar que los usuarios solo tengan los privilegios que necesitan, cuándo los necesitan y de una manera que puede ser auditada. Esto fortalece la seguridad general de tu sistema Ubuntu.

Fernán García de Zúñiga

Productos relacionados: