Cómo cambiar de usuario en un shell de Linux (comando su)

Linux tiene tres tipos de cuentas: sistema, usuario y root. Un usuario inicia sesión con su nombre y contraseña. Los procesos del sistema (como correo) también inician sesión al arrancar. La cuenta root es un usuario especial con privilegios ilimitados. Si conoces la contraseña de otra cuenta y esta permite inicio de sesión, puedes cambiar de usuario con el comando su ("substitute user", "super user" o "switch user").

El comando su

Para cambiar a otro usuario y crear una sesión como si ese usuario hubiera iniciado sesión desde la línea de comandos, escribe:

su - nombre_usuario

El guion (-) carga el entorno del usuario destino (variables de entorno, directorio home, etc.). Si omites el guion, entrarás en la cuenta del otro usuario pero con tus variables de entorno, lo que puede dar resultados distintos.

Escribe la contraseña del usuario destino cuando se solicite. Para volver a tu sesión anterior, escribe exit y pulsa Intro.

La cuenta root

Solo unos pocos usuarios experimentados y de confianza pueden iniciar sesión como root, ya que root puede leer, modificar y eliminar cualquier archivo o configuración. Para evitar que un atacante entre directamente como root, muchos sistemas exigen iniciar una sesión root desde otra sesión de usuario con su.

Si escribes su - sin nombre de usuario y pulsas Intro, el sistema asume que quieres ser root y te pide la contraseña de root.

Riesgos de seguridad con su

El comando su va en contra de muchas políticas de seguridad de red:

  • El otro usuario debe darte su contraseña.
  • Los administradores que cambian a root comparten una única contraseña de root.

Esto puede ser aceptable en una red doméstica pequeña, pero es un riesgo inaceptable en entornos profesionales. Muchas políticas de seguridad exigen deshabilitar su.

La utilidad sudo (alternativa más segura)

sudo es una alternativa popular y más segura. Un archivo de configuración (/etc/sudoers) lista qué usuarios pueden cambiar a qué cuentas (incluyendo root).

Cuando un usuario prefija un comando con sudo, se le pide su propia contraseña (no la de root) y el sistema ejecuta solo ese comando como root.

Ventajas de sudo:

  • No se comparte la contraseña de root.
  • No hay riesgo de olvidar cerrar la sesión de root (cada comando es puntual).
  • Registro de auditoría: se sabe quién ejecutó qué y cuándo.