(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.
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