La poderosa herramienta SUDO

  • ¡Hazme un sandwich!
  • ¿Que? ¡Háztelo tu!
  • SUDO ¡Hazme un sandwich!
  • Esta bien

El programa o comando sudo (de las siglas en inglés de superuser -o substitute user– do) es una utilidad de los sistemas operativos tipo Unix, como GNU/Linux, BSD, o Mac OS X, que permite a los usuarios comunes ejecutar programas con los privilegios de seguridad del super usuario (normalmente el usuario root) de manera segura.

En la mayoria de las diferentes distribuciones de GNU/Linux, encontraremos que nuestro sistema posee una cuenta principal (administrador) y cuentas para uso individual (usuarios comunes). En linux la cuenta del administrador se conoce como root, algo similar al “Administrador” en Windows.

Como podemos observar, linux maneja principalmente 2 tipos de cuentas: personales de uso diario, y el root solo para administración / configuración / instalación.

En linux para ejecutar un comando o acceder al modo root, debemos logearnos como super usuario en el sistema mediante del comando su o utilizando sudo; este ultimo puede resultar mucho más práctico y seguro, sin embargo necesita que realicemos una pequeña configuración inicial para su tener un buen funcionamiento tal como se muestra a continuación:

Configuración del Comando SUDO


Abrir una terminal y logearnos como super usuario mediante su y tecleando la respectiva contraseña de root:

[usuario@pc-00100 ~]$ su

escribiremos el siguiente comando:

echo ‘nombreusuario ALL=(ALL) ALL’ >> /etc/sudoers

Donde ‘nombreusuario’ es el nombre de nuestra cuenta personal

‘ALL=(ALL) ALL’ le dice a sudo que dicho usuario puede utilizar todos los comandos existentes en el sistema, si se desea que no se solicite contraseña para dicho usuario, se debe cambiar por

‘ALL=(ALL) NOPASSWD:ALL’

ahora, si se elige que se debe usar contraseña, esta es la del usuario en cuestión, NO LA DEL ROOT

Ejemplo:

[usuario@pc-00100~]$ su
Password: <— Escribir la clave del root [root@pc-00100 ~]# echo ‘usuario ALL=(ALL) NOPASSWD:ALL’ >> /etc/sudoers
[root@pc-00100 ~]# chmod -w /etc/sudoers
[root@pc-00100 ~]# exit
exit

El siguiente es un ejemplo de como sudo le permite ejecutar al usuario personal comandos del root:

[usuario@pc-00100 ~]$ du -sh /root
du: `/root’: Permission denied <— Falló!!!
[usuario@pc-00100 ~]$ sudo du -sh /root 163M /root <— Funcionó!!!

du es un comando que nos permite saber el tamaño de los archivos en una carpeta o partición, en este caso queremos saber que hay en la carpeta del root.

Configuración – Sudo II

Utilizando sudo para delegar privilegios

En algunas ocasiones es útil delegar privilegios de superusuario a un usuario normal de FC; sin embargo, darle la clave del superusuario a dicho usuario sería poco conveniente porque le dá total control del sistema. El sistema sudo permite delegar privilegios programa a programa para cada usuario.

El archivo de configuración se ubica en /etc/sudoers, el cual controla quién puede hacer qué, y se ejecuta por medio del comando sudo.

Para habilitar con sudo, que un usario pueda ejecutar una aplicación que solicite acceso de root, modificamos en el archivo sudoers:

su –

echo “nombreusuario ALL=/bin/netstat,/sbin/ifconfig” >> /etc/sudoers

Le estamos solicitando a sudo que permita al usuario “nombreusuario” ejecutar los comandos netstat e ifconfig

Esta entrada contiene

el nombre de usuario “nombreusuario”
las computadoras “ALL” (En las que el usuario puede ejecutar…) Útil si el archivo sudoers está compartido entre varias máquinas.
lista de comandos “/bin/netstat, /sbin/ifconfig”

Se debe ser cuidadoso al seleccionar la lista de comandos que van incluidos en la lista, porque si uno de esos comandos da acceso al shell, el usuario podrá ser capaz de ejecutar cualquier cosa.

Basados en la configuración anterior, podemos decir que dicho usuario autorizado puede ejecutar:

sudo /sbin/ifconfig

Recuerden que la clave solicitada es la del mismo usuario, NO la del root.

Incluyo la ruta completa /sbin/ifconfig, debido a que un usuario normal, normalmente no tiene incluida la ruta /sbin en su variable de entorno PATH, o ruta de búsqueda para archivos ejecutables, sería bueno añadirla…🙂

Si queremos que sudo no vuelva a preguntar por la clave, ya que tiene predispuesto volver a preguntar a los 5 minutos de recibir la última solicitud de contraseña entonces deberíamos configurar /etc/sudoers de la siguiente manera…

nombreusuario ALL=NOPASSWD:/bin/netstat,/sbin/ifconfig

De forma predeterminada, sudo utiliza al usuario root para ejecutar la lista de comandos, pero también puede utilizar cualquier otro usuario del sistema, por ejemplo

miguel ALL=(juan) NOPASSWD:/usr/local/bin/checkstatus

Con esta configuración le estamos diciendo a sudo que permita al usuario “miguel” ejecutar el comando “/usr/local/bin/checkstatus” como si fuera el usuario “juan”.

Luego “miguel” podrá utilizar sudo con la opción -u para especificar la ID de usuario:

sudo -u juan checkstatus

#comandos, #how-to