Los scripts Bash son una parte importante del trabajo de un administrador de sistemas. Le permiten automatizar tareas mundanas y críticas.
Una de las mejores cosas de los scripts es que pueden ejecutarse de forma independiente sin intervención humana, pero a veces puede ser un desafío automatizar tareas que requieren contraseñas de usuario. Veamos cómo puede automatizar de forma segura los scripts que requieren contraseñas sin comprometer la seguridad.
Crear un guión simple
Supongamos que desea crear un script simple que haga una copia de seguridad de su carpeta de inicio de Linux en una ubicación remota para que pueda restaurar fácilmente sus datos en caso de pérdida de datos.
Comience creando un archivo de script Bash en su carpeta de inicio, usando el comando táctil o cualquier otro método, y asígnele el nombre backup_home.sh. Siéntase libre de usar cualquier nombre y directorio de su agrado.
El guión utiliza el sincronizar comando, una poderosa herramienta de copia de archivos, para hacer una copia de seguridad de todos los archivos en su directorio de inicio local en un servidor remoto.
Copie el contenido del siguiente script y péguelo en su archivo Bash. Recuerde reemplazar el usuario john con el nombre correcto de su usuario doméstico local. También proporcione el nombre de usuario y la dirección IP correctos para el servidor remoto.
#!/bin/bash
#Copiar datos a un servidor remoto
rsync -avl --mkpath /home/john nombre_de_usuario@remoto_servidor/inicio/Copia de seguridad
Si no tiene un servidor remoto para probar, simplemente puede instalar VirtualBox y configurar una VM en su máquina local. Use el invitado de VM como su servidor remoto.
Guarda el archivo. Para ejecutar el script, debe otorgarle el permiso de ejecución mediante el comando sudo chmod 755. Todos los usuarios pueden ejecutar el script, pero solo los usuarios de sudo pueden modificar el archivo.
Finalmente, ejecute el script Bash desde la terminal usando el comando:
./backup_home.sh
Cada vez que ejecute este script, se le pedirá que ingrese la contraseña del servidor remoto. Esto no es ideal si desea ejecutar el script sin intervención humana, como cuando se usa Cron.
Automatización del inicio de sesión con contraseña
Instalar sshpass, un proveedor de contraseñas no interactivo, en su PC local o en la PC desde la que ejecutará el script.
En distribuciones basadas en Debian
Si está en una distribución basada en Debian como Ubuntu, Pop!_OS y Lubuntu:
sudo apto actualizar && sudo apto instalar sshpass
En RHEL y Fedora
dnf instalar sshpass
Después de instalar sshpass, modifique el script para que se vea de la siguiente manera.
#!/bin/bash
#Copiar datos a un servidor remoto
sshpass -p "tu contraseña" rsync -avl --mkpath /home/john nombre_de_usuario@servidor_remoto/home/Backup
Aquí proporciona la contraseña en texto sin formato. Obviamente, esta no es la forma ideal, ya que no es segura y no es una buena práctica. Si el guión alguna vez cae en las manos equivocadas, está en serios problemas.
Para hacerlo más seguro, usaremos GnuPG, una herramienta de encriptación segura y de código abierto.
Cifrando su contraseña
GnuPG está instalado de forma predeterminada en la mayoría de los sistemas Linux, pero en caso de que no esté instalado en su sistema, aquí se explica cómo instalar GnuPG.
Crear un archivo oculto llamado misterios usando el comando toque .secretos. Dado que ocultamos el archivo de forma predeterminada como medida de seguridad adicional, así es como puede ver archivos ocultos en Linux.
En el archivo de secretos, ingrese la contraseña de su PC remota y guárdela.
A continuación, cifre el archivo usando el gpg dominio.
sudogpg.misterios
Se le pedirá que ingrese una frase de contraseña segura y fuerte para abrir el archivo encriptado.
GnuPG creará un nuevo archivo con la extensión .gpg anexado al antiguo nombre de archivo. Su nuevo nombre de archivo debería ser ahora secretos.gpg, asumiendo que usó el misterios Nombre del archivo.
Si ve el contenido de secrets.gpg usando el gato comando, se le presentará un texto incomprensible para mostrar que su contraseña está encriptada.
Para ver el contenido del archivo en texto sin formato, deberá descifrarlo con el siguiente comando (se le pedirá que ingrese la contraseña que estableció durante el cifrado):
gpg-dqsecreto.gpg
Usar una contraseña cifrada en su script
Para usar la contraseña cifrada en la secuencia de comandos, actualice la secuencia de comandos de la siguiente manera:
#!/bin/bash
#Copiar datos a un servidor remoto
gpg -dq secretos.gpg | sshpass rsync -avl --mkpath /home/john nombre_de_usuario@remoto_servidor/inicio/Copia de seguridad
Vuelva a ejecutar los scripts de copia de seguridad y esta vez no se le solicitará una contraseña.
Automatice tareas con Bash Scripts
GnuGP se usa con frecuencia para proteger archivos y datos confidenciales en su PC y también es una excelente herramienta para proteger contraseñas en scripts Bash automatizados en Linux.
Hay muchas cosas que puede hacer con los scripts de Bash. Bash es una herramienta poderosa que puede ayudarlo a automatizar muchas cosas en Linux y aprender a escribir scripts de Bash es una inversión que vale la pena.