Comando su en Linux | Cambia de usuario

comando-su
comando-su

El comando su permite iniciar una shell con la identidad de otra cuenta de Linux. Se usa para cambiar de usuario durante una sesión o para ejecutar una orden puntual con otra identidad. El cambio solo funciona si la cuenta existe y la política de autenticación del sistema autoriza el acceso.

La diferencia importante está en el entorno: su ana cambia de usuario y abre una shell que puede conservar parte del entorno actual; su – ana inicia una sesión de login y carga el entorno de ana. Esta guía se centra en la implementación habitual de util-linux en Linux; otras plataformas pueden ofrecer opciones distintas.

👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.

Para consultar otras utilidades, visita la guía de comandos Linux por categorías.

Sintaxis del comando su

La forma general permite indicar opciones y, de manera opcional, la cuenta de destino. Si omites el nombre de usuario, su intenta abrir una shell como root.

su [opciones] [usuario]

Qué significan sus argumentos

  • opciones: modifican el tipo de shell, el entorno o si se ejecuta una orden puntual.
  • usuario: cuenta de destino. Si se omite, el destino predeterminado es root.

En muchas distribuciones, su solicita la contraseña de la cuenta de destino. Por eso, intentar cambiar a root puede fallar si esa cuenta está bloqueada o no tiene una contraseña utilizable. En equipos configurados para administrar mediante sudo, sudo -i suele ser la alternativa prevista.

Opciones habituales

ComandoQué ocurreAutenticación y nota
suIntenta abrir una shell como root sin iniciar una sesión de login.Suele pedir la contraseña de root; falla si la cuenta está bloqueada o la política lo impide.
su anaCambia a ana y abre una shell que puede conservar parte del entorno actual.Suele pedir la contraseña de ana, según PAM.
su – ana o su -l anaInicia una shell de login y prepara el entorno de ana.La cuenta debe existir y la política debe permitir el cambio.
su –Abre una shell de login como root.Suele pedir la contraseña de root.
su -c «id -un» anaEjecuta una orden como ana y vuelve a la shell original al terminar.Útil para una tarea puntual; la orden se pasa a la shell de destino.
su -s /bin/bash anaSolicita Bash en vez de la shell configurada para ana.Requiere que Bash esté instalado y permitido.
su -p anaIntenta conservar variables del entorno actual.Opción especializada; heredarlas puede alterar el comportamiento de procesos.
sudo -iAbre una shell de login como root a través de sudo.Usa las credenciales y permisos sudo del usuario actual.

Las opciones disponibles dependen de la implementación y de la configuración del sistema. En particular, conservar el entorno con -p no es lo mismo que iniciar una sesión de login; para la mayoría de los cambios interactivos, su – usuario es más predecible.

Cambiar a otro usuario

Para abrir una sesión de login como ana, ejecuta:

su - ana

La autenticación se valida contra la cuenta de destino. Una vez dentro, comprueba quién eres, qué directorio tienes como actual y cuál es tu HOME:

whoami
pwd
printf '%s\n' "$HOME"

Los resultados deberían corresponder a ana. Escribe exit para cerrar esa shell y volver a la sesión original. El guion no eleva privilegios por sí solo: simplemente solicita un entorno de login para la cuenta indicada.

Ejecutar una sola orden como otro usuario

La opción -c pasa una orden a la shell del usuario de destino. Usa comillas cuando la orden tenga espacios o argumentos:

su -c "id -un" ana

La salida esperada es ana. Al terminar la orden, su devuelve el control a tu shell original. Si quieres ejecutar una orden como root en un sistema con sudo, utiliza la política administrativa de ese sistema en lugar de abrir una shell privilegiada innecesaria.

Autenticación y acceso a root

La autenticación depende de PAM y de la configuración de la distribución, por lo que la tabla resume los casos habituales. En Ubuntu y otros sistemas donde root está bloqueado por defecto, su – suele fallar y se administra normalmente con sudo -i.

Errores comunes al utilizar su

Mensaje o síntomaCausa probable y comprobación
Authentication failureLa contraseña de destino es incorrecta, la cuenta está bloqueada o PAM no permite el cambio.
User does not existRevisa el nombre con getent passwd usuario; su no crea cuentas.
Cambia de usuario pero conserva rutas o variablesSe usó su usuario en vez de su – usuario; inicia una shell de login si necesitas el entorno completo.
La orden no encuentra un ejecutableEl PATH puede ser distinto en la shell de destino. Usa la ruta absoluta o una shell de login cuando proceda.

No uses su -p como arreglo automático: las variables heredadas pueden cambiar qué ejecutables se encuentran o pasar configuración inesperada a procesos privilegiados. Si una orden necesita privilegios, comprende primero con qué usuario se ejecuta y qué entorno recibe.

Ejemplo en video

El video muestra el cambio de usuario y los ejemplos de uso de su en Linux:

De este modo, podrás ver de forma práctica algunos de los ejemplos explicados en el artículo:

La regla práctica es elegir según el resultado que necesitas: su – usuario para una sesión de login con otra cuenta, su -c para una orden puntual y sudo -i cuando la administración del sistema se gestiona mediante sudo. Consulta el manual de su de util-linux para las opciones específicas de tu versión.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *