Linux, sudo · 8 min read · Dec 25, 2025

Guía para principiantes sobre cómo entender sudo en Ubuntu

¿Alguna vez has recibido un error de ‘Permiso denegado’ mientras trabajabas en la línea de comandos de Linux? Es probable que estuvieras intentando realizar una operación que requiere permisos de root. Por ejemplo, la siguiente captura de pantalla muestra el error que se produce cuando intenté copiar un archivo binario a uno de los directorios del sistema:

permiso denegado en la terminal

Entonces, ¿cuál es la solución a este problema? Simple, usa el comando sudo.

ejecutar comando con sudo

El usuario que está ejecutando el comando será solicitado a ingresar su contraseña de inicio de sesión. Una vez que se ingresa la contraseña correcta, la operación se realizará con éxito.

Si bien sudo es sin duda un comando que todos deben conocer para trabajar en la línea de comandos en Linux, hay varios otros detalles relacionados (y en profundidad) que debes saber para usar el comando de manera más responsable y efectiva. Y eso es exactamente lo que discutiremos aquí en este artículo.

Pero antes de continuar, vale la pena mencionar que todos los comandos e instrucciones mencionados en este artículo han sido probados en Ubuntu con la shell Bash.

¿Qué es sudo?

El comando sudo, como la mayoría de ustedes ya saben, se utiliza para ejecutar un comando con privilegios elevados (generalmente como root). Un ejemplo de esto ya lo hemos discutido en la sección de introducción anterior. Sin embargo, si lo deseas, puedes usar sudo para ejecutar el comando como otro usuario (no root).

Esto se logra a través de la opción de línea de comandos -u que proporciona la herramienta. Por ejemplo, en el ejemplo que se muestra a continuación, yo (himanshu) intenté renombrar un archivo en el directorio personal de otro usuario (howtoforge), pero obtuve un error de ‘permiso denegado’. Y luego intenté el mismo comando ‘mv’ con ‘sudo -u howtoforge’, el comando fue exitoso:

¿Qué es sudo?

¿Puede cualquier usuario usar sudo?

No. Para que un usuario pueda usar sudo, debe haber una entrada correspondiente a ese usuario en el archivo /etc/sudoers. El siguiente párrafo - tomado del sitio web de Ubuntu - debería aclararlo más:

El archivo /etc/sudoers controla quién puede ejecutar qué comandos como qué usuarios en qué máquinas y también puede controlar cosas especiales como si necesitas una contraseña para comandos particulares. El archivo está compuesto por alias (básicamente variables) y especificaciones de usuario (que controlan quién puede ejecutar qué).

Si estás usando Ubuntu, es fácil asegurarte de que un usuario pueda ejecutar el comando sudo: todo lo que tienes que hacer es hacer que la cuenta de ese usuario sea de tipo ‘administrador’. Esto se puede hacer yendo a Configuración del sistema… -> Cuentas de usuario.

usuarios sudo

Desbloqueando la ventana:

ventana de desbloqueo

Luego seleccionando el usuario cuyo tipo de cuenta deseas cambiar, y luego cambiando el tipo a ‘administrador’

elegir cuentas sudo

Sin embargo, si no estás en Ubuntu, o tu distribución no proporciona esta función, puedes editar manualmente el archivo /etc/sudoers para hacer el cambio. Se te requerirá agregar la siguiente línea en ese archivo:

[user]    ALL=(ALL:ALL) ALL

No hace falta decir que [user] debe ser reemplazado por el nombre de usuario de la cuenta a la que estás otorgando el privilegio de sudo. Una cosa importante que vale la pena mencionar aquí es que el método oficialmente sugerido para editar este archivo es a través del comando visudo - todo lo que tienes que hacer es ejecutar el siguiente comando:

sudo visudo

Para darte una idea de por qué exactamente es así, aquí hay un extracto del manual de visudo:

visudo edita el archivo sudoers de manera segura. visudo bloquea el archivo sudoers contra ediciones simultáneas, proporciona comprobaciones básicas de cordura y verifica errores de análisis. Si el archivo sudoers está siendo editado actualmente, recibirás un mensaje para intentar nuevamente más tarde.

Para más información sobre visudo, dirígete aquí.

¿Qué es una sesión sudo?

Si usas el comando sudo con frecuencia, estoy seguro de que habrás observado que después de ingresar la contraseña correctamente una vez, puedes ejecutar múltiples comandos sudo sin que se te pida la contraseña. Pero después de un tiempo, el comando sudo te pedirá nuevamente tu contraseña.

Este comportamiento no tiene nada que ver con la cantidad de comandos impulsados por sudo que ejecutas, sino que depende del tiempo. Sí, por defecto, sudo no pedirá la contraseña durante 15 minutos después de que el usuario la haya ingresado una vez. Después de estos 15 minutos, se te pedirá la contraseña nuevamente.

Sin embargo, si lo deseas, puedes cambiar este comportamiento. Para ello, abre el archivo /etc/sudoers usando el siguiente comando:

sudo visudo

Y luego ve a la línea que dice:

Defaults env_reset

env_reset

y agrega la siguiente variable (resaltada en negrita a continuación) al final de la línea

Defaults env_reset,timestamp_timeout=[nuevo-valor]

El campo [nuevo-valor] debe ser reemplazado por el número de minutos que deseas que dure tu sesión sudo. Por ejemplo, yo usé el valor 40.

valor de tiempo de espera de sudo

En caso de que desees que se te pida la contraseña cada vez que uses el comando sudo, en ese caso puedes asignar el valor ‘0’ a esta variable. Y para aquellos de ustedes que desean que su sesión sudo nunca expire, pueden asignar el valor ‘-1’.

Ten en cuenta que usar timestamp_timeout con el valor ‘-1’ está fuertemente desaconsejado.

La contraseña de sudo

Como habrás observado, cada vez que sudo te pide una contraseña y comienzas a ingresarla, no aparece nada - ni siquiera un asterisco que es lo habitual. Si bien eso no es un gran problema en general, algunos usuarios pueden querer que se muestren los asteriscos por cualquier razón.

Lo bueno es que eso es posible y bastante fácil de hacer. Todo lo que tienes que hacer es cambiar la siguiente línea en el archivo /etc/sudoers:

Defaults        env_reset

a

Defaults        env_reset,pwfeedback

Y guarda el archivo.

Ahora, cada vez que escribas la contraseña de sudo, aparecerá un asterisco.

ocultar la contraseña de sudo

Algunas opciones importantes de línea de comandos de sudo

Aparte de la opción de línea de comandos -u (que ya hemos discutido al principio de este tutorial), hay algunas otras opciones importantes de línea de comandos de sudo que merecen ser mencionadas. En esta sección, discutiremos algunas de ellas.

La opción -k

Considera un caso en el que acabas de ejecutar un comando impulsado por sudo después de ingresar tu contraseña. Ahora, como ya sabes, la sesión sudo permanece activa durante 15 minutos por defecto. Supongamos que durante esta sesión, tienes que darle acceso a alguien a tu terminal, pero no quieres que puedan usar sudo. ¿Qué harás?

Afortunadamente, existe una opción de línea de comandos -k que permite a los usuarios revocar el permiso de sudo. Esto es lo que dice la página del manual de sudo sobre esta opción:

-k, --reset-timestamp  
Cuando se usa sin un comando, invalida las credenciales en caché del usuario. En otras palabras, la próxima vez que se ejecute sudo se requerirá una contraseña. Esta opción no requiere una contraseña y se agregó para permitir que un usuario revoque los permisos de sudo desde un archivo .logout.  
Cuando se usa junto con un comando o una opción que puede requerir una contraseña, esta opción hará que sudo ignore las credenciales en caché del usuario. Como resultado, sudo pedirá una contraseña (si es requerida por la política de seguridad) y no actualizará las credenciales en caché del usuario.

La opción -s

Puede haber momentos en los que tu trabajo requiera que ejecutes un montón de comandos que necesitan privilegios de root, y no quieres ingresar la contraseña de sudo cada vez. Además, no quieres modificar el límite de tiempo de la sesión sudo haciendo cambios en el archivo /etc/sudoers.

En ese caso, puede que desees usar la opción de línea de comandos -s del comando sudo. Aquí está cómo lo explica la página del manual de sudo:

-s, --shell  
Ejecuta la shell especificada por la variable de entorno SHELL si está configurada o la shell especificada por la entrada de la base de datos de contraseñas del usuario que invoca. Si se especifica un comando, se pasa a la shell para su ejecución a través de la opción -c de la shell. Si no se especifica ningún comando, se ejecuta una shell interactiva.

Así que básicamente, lo que hace esta opción de línea de comandos es:

  • Lanza una nueva shell - en cuanto a qué shell, se refiere a la variable de entorno SHELL. En caso de que $SHELL esté vacío, se toma la shell definida en el archivo /etc/passwd.
  • Si también estás pasando un nombre de comando junto con la opción -s (por ejemplo: sudo -s whoami), entonces el comando real que se ejecuta es: sudo /bin/bash -c whoami.
  • Si no estás tratando de ejecutar ningún otro comando (es decir, solo estás tratando de ejecutar sudo -s), entonces obtienes una shell interactiva con privilegios de root.

Lo que vale la pena tener en cuenta aquí es que la opción de línea de comandos -s te da una shell con privilegios de root, pero no obtienes el entorno root - es tu .bashrc la que se carga. Esto significa que, por ejemplo, en la nueva shell que ejecuta sudo -s, ejecutar el comando whoami seguirá devolviendo tu nombre de usuario, y no ‘root’.

La opción -i

La opción -i es similar a la opción -s que acabamos de discutir. Sin embargo, hay algunas diferencias. Una de las diferencias clave es que -i también te da el entorno root, lo que significa que tu .bashrc (de usuario) es ignorado. Es como convertirse en root sin iniciar sesión explícitamente como root. Además, no tienes que ingresar la contraseña del usuario root tampoco.

*Importante: Ten en cuenta que existe un comando su que también te permite cambiar de usuario (por defecto, te permite convertirte en root). Este comando requiere que ingreses la contraseña de ‘root’. Para evitar esto, también puedes ejecutarlo con sudo (‘sudo su’); en ese caso solo tendrás que ingresar tu contraseña de inicio de sesión. Sin embargo, ‘su’ y ‘sudo su’ tienen algunas diferencias subyacentes - para entenderlas así como saber más sobre cómo ‘sudo -i’ se compara con ellas, dirígete aquí.*

Conclusión

Espero que para este momento al menos hayas entendido la idea básica detrás de sudo, y cómo puedes ajustar su comportamiento predeterminado. Intenta probar las modificaciones en /etc/sudoers que hemos explicado aquí, también revisa la discusión en el foro (enlazada en el último párrafo) para obtener más información sobre el comando sudo.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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