Linux comandos · 7 min read · Jan 31, 2026

Entendiendo la diferencia entre los comandos sudo y su en Linux

En uno de nuestros artículos anteriores, discutimos el comando ‘sudo’ en detalle. Hacia el final de ese tutorial, se mencionó otro comando similar ‘su’ en una pequeña nota. Bueno, en este artículo, discutiremos en detalle el comando ‘su’ así como cómo se diferencia del comando ‘sudo’.

Pero antes de hacer eso, tenga en cuenta que todas las instrucciones y ejemplos mencionados en este tutorial han sido probados en Ubuntu 18.04 LTS y Debian 10.

El comando su en Linux

El trabajo principal del comando su es permitirle cambiar a otro usuario durante una sesión de inicio de sesión. En otras palabras, la herramienta le permite asumir la identidad de otro usuario sin tener que cerrar sesión y luego iniciar sesión (como ese usuario).

El comando su se utiliza principalmente para cambiar a la cuenta de superusuario/root (ya que los privilegios de root son frecuentemente requeridos al trabajar en la línea de comandos), pero - como ya se mencionó - también puede usarlo para cambiar a cualquier otro usuario que no sea root.

Aquí le mostramos cómo puede usar este comando para cambiar al usuario root:

La contraseña que este comando requiere también es la del usuario root. Así que, en general, el comando su requiere que ingrese la contraseña del usuario objetivo. Después de ingresar la contraseña correcta, la herramienta inicia una sub-sesión dentro de la sesión existente en el terminal.

su -

Hay otra forma de cambiar al usuario root: ejecute el comando ‘su -‘:

Ahora, ¿cuál es la diferencia entre ‘su’ y ‘su -‘? Bueno, el primero mantiene el entorno del antiguo/usuario original incluso después de que se ha realizado el cambio a root, mientras que el segundo crea un nuevo entorno (como lo dicta el ~/.bashrc del usuario root), similar al caso cuando inicia sesión explícitamente como usuario root desde la pantalla de inicio de sesión.

IMPORTANTE para los usuarios de Debian 10. La variable PATH del usuario root difiere en Debian 10 al usar ‘su’ vs ‘su -‘, directorios como /sbin faltan cuando solo se usa ‘su’, lo que significa que podría recibir errores de comando no encontrado incluso para comandos básicos de administración del sistema. Así que siempre use ‘su -‘ en Debian 10 para convertirse en usuario root.

La página del manual de ‘su’ también lo deja claro:

El argumento opcional - puede ser utilizado para proporcionar un entorno similar a lo que el usuario esperaría si hubiera iniciado sesión directamente.

Así que, estará de acuerdo en que iniciar sesión con ‘su -‘ tiene más sentido. Pero como el comando ‘su’ también existe, uno podría preguntarse cuándo es útil. El siguiente extracto - tomado del sitio web de ArchLinux wiki - da una buena idea sobre los beneficios y desventajas del comando ‘su’:

  • A veces puede ser ventajoso para un administrador del sistema usar la cuenta de shell de un usuario ordinario en lugar de la suya propia. En particular, ocasionalmente la forma más eficiente de resolver el problema de un usuario es iniciar sesión en la cuenta de ese usuario para reproducir o depurar el problema.

  • Sin embargo, en muchas situaciones no es deseable, o incluso puede ser peligroso, que el usuario root esté operando desde la cuenta de shell de un usuario ordinario y con las variables ambientales de esa cuenta en lugar de desde la suya propia. Al usar inadvertidamente la cuenta de shell de un usuario ordinario, root podría instalar un programa o hacer otros cambios en el sistema que no tendrían el mismo resultado que si se hicieran mientras se usa la cuenta root. Por ejemplo, se podría instalar un programa que podría darle al usuario ordinario el poder de dañar accidentalmente el sistema o acceder sin autorización a ciertos datos.

Nota: En caso de que desee pasar más argumentos después de - en ‘su -‘, entonces debe usar la opción de línea de comandos -l que ofrece el comando (en lugar de -). Aquí está la definición de - y la opción de línea de comandos -l:

-, -l, --login  
Proporciona un entorno similar a lo que el usuario esperaría si hubiera iniciado sesión directamente.  
  
Cuando - se usa, debe especificarse como la última opción de su. Las otras formas (-l y --login) no tienen esta restricción.

su -c

Hay otra opción del comando ‘su’ que vale la pena mencionar: -c. Le permite proporcionar un comando que desea ejecutar después de cambiar al usuario objetivo.

La página del manual de ‘su’ lo explica así:

-c, --command COMMAND  
 Especifica un comando que será invocado por la shell usando su -c.  
  
El comando ejecutado no tendrá terminal de control. Esta opción no se puede usar para ejecutar programas interactivos que necesiten un TTY de control.

Considere el siguiente ejemplo de plantilla:

su [usuario-objetivo] -c [comando-a-ejecutar]

Así que en este caso, el ‘comando-a-ejecutar’ se ejecutará como:

[shell] -c [comando-a-ejecutar]

Donde ‘shell’ sería reemplazada por la shell del ‘usuario-objetivo’ definida en el /etc/passwd.

Sudo vs Su

Ahora que hemos discutido los conceptos básicos del comando ‘su’, también es hora de discutir las diferencias entre los comandos ‘sudo’ y ‘su’.

Contraseña

La principal diferencia entre los dos es la contraseña que requieren: mientras que ‘sudo’ requiere la contraseña del usuario actual, ‘su’ requiere que ingrese la contraseña del usuario root.

Claramente, ‘sudo’ es una mejor alternativa entre los dos en lo que respecta a la seguridad. Por ejemplo, considere el caso de una computadora utilizada por múltiples usuarios que también requieren acceso root. Usar ‘su’ en tal escenario significa compartir la contraseña de root con todos ellos, lo cual no es una buena práctica en general.

Además, en caso de que desee revocar el acceso de superusuario/root de un usuario en particular, la única forma es cambiar la contraseña de root y luego redistribuir la nueva contraseña de root entre todos los demás usuarios.

Con Sudo, por otro lado, puede manejar ambos escenarios sin esfuerzo. Dado que ‘sudo’ requiere que los usuarios ingresen su propia contraseña, no necesita compartir la contraseña de root con todos los usuarios en primer lugar. Y para detener a un usuario en particular de acceder a los privilegios de root, todo lo que tiene que hacer es modificar la entrada correspondiente en el archivo ‘sudoers’.

Comportamiento predeterminado

La otra diferencia entre los dos comandos está en su comportamiento predeterminado. Mientras que ‘sudo’ solo le permite ejecutar un solo comando con privilegios elevados, el comando ‘su’ lanza una nueva shell, permitiéndole ejecutar tantos comandos como desee con privilegios de root hasta que salga explícitamente de esa shell.

Así que el comportamiento predeterminado del comando ‘su’ es potencialmente peligroso dado que existe la posibilidad de que el usuario olvide que está trabajando como root, y podría inadvertidamente hacer algunos cambios irreversibles (como ejecutar el comando ‘rm -rf’ en el directorio incorrecto). Para una discusión detallada sobre por qué no se recomienda trabajar siempre como root, dirígete aquí.

Registro

Aunque los comandos ejecutados a través de ‘sudo’ se ejecutan como el usuario objetivo (que es ‘root’ por defecto), están etiquetados con el nombre de usuario del sudoer. Pero en el caso de ‘su’, no es posible rastrear directamente lo que un usuario hizo después de que se cambió a la cuenta root.

Flexibilidad

El comando ‘sudo’ es mucho más flexible en el sentido de que incluso puede limitar los comandos a los que desea que los sudoers tengan acceso. En otras palabras, a los usuarios con acceso a ‘sudo’ solo se les puede dar acceso a los comandos que son necesarios para su trabajo. Sin embargo, con ‘su’ eso no es posible: o tiene el privilegio de hacer todo o nada.

Sudo su

Presumiblemente debido a los riesgos potenciales involucrados con el uso de ‘su’ o iniciar sesión directamente como root, algunas distribuciones de Linux - como Ubuntu - desactivan la cuenta de usuario root por defecto. Se alienta a los usuarios a usar ‘sudo’ siempre que necesiten privilegios de root.

Sin embargo, aún puede hacer ‘su’ con éxito, es decir, sin ingresar la contraseña de root. Todo lo que necesita hacer es ejecutar el siguiente comando:

sudo su

Dado que está ejecutando el comando con ‘sudo’, solo se le pedirá que ingrese su contraseña. Así que una vez que eso esté hecho, el comando ‘su’ se ejecutará como root, lo que significa que no pedirá ninguna contraseña.

PS: En caso de que desee habilitar la cuenta root en su sistema (aunque eso se desaconseja firmemente porque siempre puede usar ‘sudo’ o ‘sudo su’), tendrá que establecer la contraseña de root manualmente, lo que puede hacer utilizando el siguiente comando:

sudo passwd root

Conclusión

Tanto este como nuestro tutorial anterior (que se centra en ‘sudo’) deberían darle una buena idea sobre las herramientas disponibles que le permiten realizar tareas que requieren privilegios elevados (o un conjunto completamente diferente de privilegios). En caso de que tenga algo que compartir sobre ‘su’ o ‘sudo’, o quiera compartir su propia experiencia, es bienvenido a hacerlo en los comentarios a continuación.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.