sudo con Bash

Comando sudo para Linux

Haciendo uso del comando sudo de Linux podemos ejecutar comandos con privilegios elevados. Podremos realizar tareas administrativas sin la necesidad de entrar al sistema como usuario root, superusuario o cualquier otro usuario de nuestro sistema.

La palabra reservada sudo proviene de superuser do o de switch user and do.

sudo [opciones] comando [argumentos]

Vamos a ver algunos ejemplos usando el comando sudo. Recuerda que vamos a necesitar conocer la contraseña del usuario root para poder ejecutar comandos.

Un ejemplo básico del comando sudo de Linux puede ser para actualizar la lista de paquetes nuestro sistema operativo.

sudo apt update

Más ejemplos básicos del uso de sudo

Ahora vamos a cambiar los permisos de ejecución de un archivo también haciendo uso del comando sudo.

Aunque la sesión es del usuario kali, haciendo uso de sudo modificaremos los permisos de fichero2.txt que ha sido creado por usuario_nuevo.

sudo chmod ugo-x fichero2.txt
Eliminando permisos de ejecución con sudo.

En la anterior captura de pantalla podemos ver:

  • Listamos ficheros con extensión .txt
  • Verificamos con whoami el usuario activo.
  • Eliminamos el permiso de ejecución para todos los usuarios con el comando chmod de Linux.
  • Volvemos a listar y verificamos que se hizo correctamente la eliminación de permisos.

Otro ejemplo sería ver el contenido de un fichero para el que no tenemos permisos de lectura.

sudo cat saludo.txt
Viendo el contenido de un fichero haciendo uso de cat.

En la captura anterior podemos observar que si no hacemos uso del comando sudo no tenemos permiso para ver el contenido del fichero saludo.txt.

Ejemplo de sudo con argumentos

También podemos hacer uso de argumentos cuando usamos el comando sudo.

En este ejemplo, haciendo uso del argumento -y descargaremos e instalaremos las actualizaciones de paquetes que ya tenemos instalados evitando que nos pregunte si deseamos continuar con la instalación. Cualquier pregunta que tuviese que hacernos el sistema durante el proceso se contestará con yes, gracias al argumento -y.

sudo apt upgrade -y

Opciones con sudo en Linux

La mejor forma de dar potencia a nuestros comandos de Linux es hacer uso de las opciones disponibles para cada comando. Recuerda que puedes ver las opciones del comando sudo escribiendo en la terminal man sudo.

  • sudo -u → podemos usar comandos como si fuésemos el usuario que especifiquemos.
sudo -u nuevo_usuario cat fichero.txt
  • sudo -k → invalida el tiempo de autenticación como sudo. Si lo volvemos a ejecutar volverá a pedirnos la clave.
  • sudo -i → iniciamos sesión de forma similar a iniciar sesión con el usuario root.
  • sudo -E → conserva las variables de entorno del usuario original.
  • sudo -H → establece la variable de entorno HOME en el directorio del usuario especificado.

Ejemplo de sudo con opciones

En este ejemplo asignaremos permisos de ejecución haciendo uso del comando chmod de Linux. Los asignaremos de una forma concreta:

A ver si no suena a trabalenguas, con el usuario kali y haciendo uso del comando sudo, asignamos nuevos permisos como si fuésemos el usuario nuevo_usuario.

  • sudo -u nuevo_usuario → indicamos que lo que vayamos a hacer lo haremos con el usuario nuevo_usuario, que he verificado previamente que existe en mi sistema de otro tutorial.
  • chmod ugo+x fichero2.txt → se asigna permiso de ejecución al fichero2.txt para todos los grupos de usuarios.
sudo -u nuevo_usuario chmod ugo+x fichero2.txt
Con el usuario kali y haciendo uso del comando sudo, asignamos nuevos permisos como si fuésemos el usuario nuevo_usuario

En esta captura de pantalla lo primero que realizo es un ls -l *.txt para ver con formato long todos los archivos con extensión txt que tengo. Puedes conocer mucho más sobre el comando ls en Bash.

Descubro que tengo fichero2.txt que ha sido creado por el usuario nuevo_usuario.

Haciendo uso del comando (sudo -u kali chmod ugo+x fichero2.txt) intento asignar permisos de ejecución con el usuario kali. Recibo Operation not permitted ya que el usuario kali no es el propietario de fichero2.txt y no puede modificar sus permisos.

En cambio, si realizo este mismo comando pero asignando los permisos con el usuario nuevo_usuario (sudo -u nuevo_usuario chmod ugo+x fichero2.txt) puedo asignarlos sin problemas.

En el siguiente listado con ls -l *.txt podemos ver que se agregaron los nuevos permisos correctamente.

Otro ejemplo haciendo uso de opciones con sudo

En este ejemplo vamos a rizar un poco más el rizo.

El usuario kali tiene una variable de entorno llamada v1 que tiene por valor fichero2.txt. El usuario nuevo_usuario tiene un fichero llamado fichero2.txt que solo puede leer él.

Haciendo uso del comando sudo -E -u conservaremos la variable de entorno v1 del usuario kali que contiene el nombre del fichero «fichero2.txt» y ejecutaremos el comando cat como si fuésemos el usuario nuevo_usuario mediante el uso de la opción -u.

sudo -E -u nuevo_usuario cat $v1

Paso a paso:

  • Listamos.
ls -l *.txt
  • Creo la variable de entorno con el usuario kali.
export v1="fichero2.txt"
  • Intento mostrar el contenido de $v1 que vendría a ser lo mismo que ejecutar el comando cat fichero2.txt. Obtengo permiso denegado, ya que fichero2.txt solo puede ser leído por el usuario nuevo_usuario.
cat $v1
  • Ahora mediante el comando sudo hago uso de las opciones -E para conservar las variables de entorno y con -u para ejecutar el comando cat como si fuese el usuario nuevo_usuario. De esta forma puedo ver el contenido de fichero2.txt sin problemas.
sudo -E -u nuevo_usuario cat $v1

En la siguiente captura de pantalla podemos ver este ejemplo de forma más gráfica con los resultados reales de los comandos.

Haciendo uso del comando sudo -E -u

Dejar un comentario

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