Sudo

(o hacer como root)

El comando sudo es una herramienta propia de los sistemas operativos *nix, que ultimamente tambien se ve acercandose a los sistemas operativos propietarios.

Historieta sobre sudo

Historieta explicativa

Presenta muchas ventajas, pues crea una plataforma de acceso a binarios protegidos para el usuarios administrador.

A continuacion observaremos la implementacion de sudo, como una plataforma de backup de una base de datos, para que el encargado del backup no tenga acceso a los archivos de configuracion ni a los binarios de la base de datos
Instalacion

La herramienta viene instalada por defecto en casi todas las distribuciones tradicionales de GNU/Linux, pero en ocasiones seria necesario instalarla

En distribuciones basadas en debian + apt:

root@localhost # apt-get install sudo

En distribuciones basadas en redhat + yum:

root@localhost # yum install sudo

Con la instalacion de la herramienta, el archivo /etc/sudoers deberia crearse, es ahi donde se haran las configuraciones
Configuracion

Para la correcta (y segura) utilizacion de la herramienta, lo ideal es crear cuentas de usuarios y grupos especiales que no tengan acceso a nada, ni siquiera una carpeta propia

Crear el grupo especial “invitados” al cual seran miembros las cuentas que deban hacer las tareas administrativas

root@localhost # grupoadd invitados

Crear las cuentas de usuarios con la opcion -g invitados para que asi el grupo principal sea el grupo previamente creado, no se debe usar la opcion -m para asi no crear carpetas personales para estos usuarios

root@localhost # useradd -g invitados invitado

Si ya existen usuarios en el sistema a los cuales se debera dar acceso, se modificaran para que pertenezcan al grupo “invitados”

root@localhost # adduser rodolfo invitados
Adding user `rodolfo' to group `invitados' ...
Adding user rodolfo to group invitados
Done.

Scripts

Para la ejecucion de las acciones, lo ideal es crear un conjunto de scripts, con todas las acciones, a fin de que el usuario invitado no tenga acceso a ellos de forma independiente, pues sudo es lo suficientemente versatil como para permitir ejecucion de binarios y archivos de todo tipo

Como regla general, si se agregan scripts especiales a un sistema estadar, lo ideal es guardarlo en la capeta /opt/ de la raiz, pues esta ahi para binarios y programas de terceros

root@localhost # mkdir /opt/scripts/

y luego los scripts propiamente dicho, por ejemplo un script para el backup de una base de datos Postgres SQL, que estara en /opt/scripts/backup.sh

#!/bin/bash.
su -c "pg_dumpall > /opt/backup/$(date -I).pgsql" postgres
echo "Finalizado"

Seguridad

La configuracion de sudo

En el archivo de configuracion /etc/sudoers, al final del mismo se debera incluir la siguiente linea y detallaremos a continuacion las opciones :

%invitados ALL=NOPASSWD: /opt/scripts/backup.sh

El primero parametro ”%inivtados” indica el grupo que tendra acceso a las siguintes opciones, puede ser un solo usuario en la forma de “rodolfo” (sin %), “invitado”, etc. El siguiente parametro “ALL=NOPASSWD:“indica que se aplica a todas las maquinas, y no requiere de password para ejecutarse en ninguna de ellas. Y el ultimo parametro es el script al cual tendra acceso el usuario o grupo en cuestion, puede ser una serie separada por coma.

La configuracion de los archivos

De acuerdo a la configuracion anterior el usuario invitado tendra acceso al archivo /opt/scripts/backup.sh, pero eso significa acceso irrestricto al archivo, por lo cual es importante dar al archivo un nivel de seguridad en sistema de archivo, para que no cualquiera puede leer su contenido, pues en ocasiones dentro del archivo se pueden guardar passwords o configuraciones de seguridad a la cual nadie deberia tener acceso

root@localhost # chmod 111 /opt/scripts/backup.sh

Conclusion

Habiendo finalizadas las configuraciones previas, el nuevo usuario “invitado” tendra acceso a al archivo para ejecutarlo

invitado@localhost $ sudo /opt/scripts/backup.sh
Finalizado

Pero no tendra acceso de lectura o escritura al mismo

invitado@localhost $ sudo cat /opt/scripts/backup.sh
[sudo] password for invitado:
Sorry, user invitado is not allowed to execute
'/bin/cat /opt/scripts/backup.sh' as root on localhost

Observamos que al ejecutar el nuevo comando, el sistema le solicita un passwrod, esto indica que en las configuraciones del archivo /etc/sudoers se aplica, pues en nuestra configuracion deciamos “NOPASSWD” para la accion. Una vez ingresado el password, el sistema reconoce la falta de permisos e indica eso al usuario

Deja un comentario

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