Introducción
El comando sudo le permite ejecutar programas como otro usuario, por defecto el usuario root. Si pasa mucho tiempo en la línea de comandos, sudo es uno de los comandos que utilizará con bastante frecuencia.
Usar sudo en lugar de acceder como root es más seguro porque puede otorgar privilegios administrativos limitados a usuarios individuales sin conocer la contraseña de root.
En este tutorial, explicaremos cómo usar el comando sudo
Instalar Sudo
El paquete sudo está preinstalado en la mayoría de las distribuciones de Linux.
Para verificar si el paquete sudo está instalado en su sistema, abra la consola, escriba sudo
y presione Enter
. Si ha instalado sudo, el sistema mostrará un breve mensaje de ayuda; de lo contrario, verá algo como el sudo command not found
.
Si sudo no está instalado, puede instalarlo fácilmente usando el administrador de paquetes de su distribución.
Instalar Sudo en Ubuntu y Debian
apt install sudo
Instalar Sudo en CentOS y Fedora
yum install sudo
Agregar un usuario al grupo Sudo
Por defecto en la mayoría de las distribuciones de Linux, otorgar acceso a sudo es tan simple como agregar el usuario al grupo sudo definido en el archivo sudoers
Los miembros de este grupo podrán ejecutar cualquier comando como root. El nombre del grupo puede diferir de una distribución a otra.
En distribuciones basadas en RedHat como CentOS y Fedora, el nombre del grupo sudo es wheel
. Para agregar el usuario a la ejecución grupal:
usermod -aG wheel username
En Debian, Ubuntu y sus derivados, los miembros de la sudo
grupo tienen acceso sudo:
usermod -aG sudo username
La cuenta de usuario raíz en Ubuntu está deshabilitada de forma predeterminada por razones de seguridad y se anima a los usuarios a realizar tareas administrativas del sistema utilizando sudo. El usuario inicial creado por el instalador de Ubuntu ya es miembro del grupo sudo, por lo que si está ejecutando Ubuntu, es probable que el usuario al que ha iniciado sesión ya tenga privilegios de sudo.
Si desea permitir que un usuario específico ejecute solo ciertos programas como sudo, en lugar de agregar al usuario al grupo sudo, agregue los usuarios al archivo sudoers
Por ejemplo, para permitir que el noviello
ejecute solo el mkdir
como sudo, escriba:
sudo visudo
y agregue la siguiente línea:
noviello ALL=/bin/mkdir
En la mayoría de los sistemas, el visudo
abre el /etc/sudoers
con el editor de texto vim. Si es nuevo en vim, consulte nuestro artículo sobre cómo guardar un archivo y cerrar el editor de vim.
También puede permitir que los usuarios ejecuten comandos sudo sin ingresar la contraseña:
noviello ALL=(ALL) NOPASSWD: ALL
Cómo usar Sudo
La sintaxis del sudo
es la siguiente:
sudo OPTION.. COMMAND
El comando sudo
tiene muchas opciones que controlan su comportamiento, pero generalmente sudo
se usa en su forma más simple, sin opciones.
Para usar sudo, simplemente agregue el comando de prefijo con sudo
:
sudo command
¿Dónde está el command
el que desea usar sudo?
Sudo leerá el /etc/sudoers
y comprobará si el usuario invocado está autorizado con acceso a sudo. La primera vez que use sudo en una sesión, se le pedirá la contraseña del usuario y el comando se ejecutará como root.
Por ejemplo, para listar todos los archivos en el /root
debe usar:
sudo ls /root
[sudo] password for noviello:....bashrc.cache.config.local.profile
Tiempo de espera de contraseña
De forma predeterminada, sudo le pedirá que ingrese su contraseña nuevamente después de cinco minutos de inactividad de sudo. Puede cambiar el tiempo de espera predeterminado editando los sudoers
. Abra el archivo con visudo
:
sudo visudo
Establezca el tiempo de espera predeterminado agregando la siguiente línea, donde 10
es el tiempo de espera especificado en minutos:
Defaults timestamp_timeout=10
Si desea cambiar la marca de tiempo solo para un usuario específico, agregue la siguiente línea, donde nombre_usuario es el usuario en cuestión.
Defaults:user_name timestamp_timeout=10
Ejecute un comando como un usuario que no sea root
Generalmente sudo
solo se usa para otorgar permisos de root a un usuario normal. De hecho, puede usar sudo
para ejecutar un comando como cualquier usuario.
La -u
permite ejecutar un comando como un usuario específico.
En el siguiente ejemplo usamos sudo
para ejecutar el whoami
como usuario "piero":
sudo -u piero whoami
El whoami
imprimirá el nombre del usuario que ejecuta el comando:
piero
Cómo redirigir con Sudo
Si intenta redirigir la salida de un comando a un archivo donde el usuario no tiene permisos de escritura, se mostrará el error "Permiso denegado".
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
Esto sucede porque la >
se realiza bajo el usuario que inició sesión, no el usuario especificado por sudo. La redirección ocurre antes de que se invoque el comando sudo
Una solución es invocar un nuevo shell como root usando sudo sh -c
:
sudo sh -c 'echo "test" > /root/file.txt'
Otra opción es conectar la salida del usuario normal al tee
como se muestra a continuación:
echo "test" | sudo tee /root/file.txt
Conclusión
Aprendió a usar el sudo
y a crear nuevos usuarios con privilegios de sudo.