Gli script bash sono una parte importante del lavoro di un amministratore di sistema. Ti consentono di automatizzare sia le attività banali che quelle critiche.

Una delle cose migliori degli script è che possono essere eseguiti in modo indipendente senza intervento umano, ma a volte può essere difficile automatizzare le attività che richiedono password utente. Diamo un'occhiata a come automatizzare in modo sicuro gli script che richiedono password senza compromettere la sicurezza.

Creazione di uno script semplice

Supponiamo che tu voglia creare un semplice script che esegua il backup della tua cartella home di Linux in una posizione remota in modo da poter ripristinare facilmente i tuoi dati in caso di perdita di dati.

Inizia creando un file di script Bash nella tua cartella home, utilizzando il comando touch o qualsiasi altro metodo e nominarlo backup_home.sh. Sentiti libero di usare qualsiasi nome e directory di tuo gradimento.

Lo script utilizza il rsync comando, un potente strumento di copia dei file, per eseguire il backup di tutti i file nella tua home directory locale su un server remoto.

instagram viewer

Copia il contenuto del seguente script e incollalo nel tuo file Bash. Ricorda di sostituire l'utente john con il nome corretto del tuo utente locale. Fornisci anche il nome utente e l'indirizzo IP corretti per il server remoto.

#!/bin/bash
#Copia i dati su un server remoto
rsync -avl --mkpath /home/john nome_utente@a distanza_server/casa/Backup

Se non hai un server remoto con cui testare, puoi semplicemente farlo installa VirtualBox e configura una VM sulla tua macchina locale. Usa il guest VM come server remoto.

Salva il file. Per eseguire lo script è necessario concedergli il permesso di esecuzione utilizzando il comando sudo chmod 755. Tutti gli utenti possono eseguire lo script ma solo gli utenti sudo possono modificare il file.

Infine, esegui lo script Bash dal terminale usando il comando:

./backup_home.sh

Ogni volta che esegui questo script, ti verrà chiesto di inserire la password del server remoto. Questo non è l'ideale se vuoi eseguire lo script senza intervento umano, come quando usi Cron.

Automatizzare l'accesso tramite password

Installare sshpass, un provider di password non interattivo, sul tuo PC locale o sul PC da cui eseguirai lo script.

Nelle distribuzioni basate su Debian

Se utilizzi una distribuzione basata su Debian come Ubuntu, Pop!_OS e Lubuntu:

sudo apt aggiornamento && sudo apt installare sshpass

Su RHEL e Fedora

dnf installare sshpass

Dopo aver installato sshpass, modificare lo script in modo che appaia come segue.

#!/bin/bash
#Copia i dati su un server remoto
sshpass -p "la tua password" rsync -avl --mkpath /home/john nome_utente@server_remoto/home/Backup

Qui si fornisce la password in testo normale. Ovviamente, questo non è il modo ideale, dal momento che non è sicuro e non è una buona pratica. Se la sceneggiatura cade nelle mani sbagliate, sei nei guai.

Per renderlo più sicuro, utilizzeremo GnuPG, uno strumento di crittografia sicuro e open-source.

Crittografia della password

GnuPG è installato di default sulla maggior parte dei sistemi Linux, ma nel caso in cui non sia installato sul tuo sistema, ecco come installare GnuPG.

Crea un file nascosto denominato segreti utilizzando il comando tocco .segreti. Poiché abbiamo nascosto il file per impostazione predefinita come misura di sicurezza aggiuntiva, ecco come puoi farlo visualizzare i file nascosti su Linux.

Nel file dei segreti, inserisci la password del tuo PC remoto e salvala.

Quindi, crittografare il file utilizzando l'estensione gpg comando.

sudogpg.segreti

Ti verrà richiesto di inserire una passphrase sicura e sicura per aprire il file crittografato.

GnuPG creerà un nuovo file con estensione .gpg aggiunto al vecchio nome del file. Il tuo nuovo nome file ora dovrebbe essere segreti.gpg, supponendo che tu abbia usato il segreti nome del file.

Se visualizzi il contenuto di secrets.gpg utilizzando il file gatto comando, ti verrà presentato del testo incomprensibile per mostrare che la tua password è crittografata.

Per visualizzare il contenuto del file in testo normale, dovrai decrittografarlo utilizzando il seguente comando (ti verrà richiesto di inserire la password impostata durante la crittografia):

gpg-dqsegreto.gpg

Utilizzo di una password crittografata nel tuo script

Per utilizzare la password crittografata nello script, aggiornare lo script come segue:

#!/bin/bash
#Copia i dati su un server remoto
gpg -dq segreti.gpg | sshpass rsync -avl --mkpath /home/john nome_utente@a distanza_server/casa/Backup

Esegui di nuovo gli script di backup e questa volta non ti verrà richiesta una password.

Automatizza le attività con gli script Bash

GnuGP viene spesso utilizzato per proteggere file e dati sensibili sul tuo PC ed è anche un ottimo strumento per proteggere le password negli script Bash automatizzati su Linux.

C'è molto che puoi fare con gli script Bash. Bash è un potente strumento che può aiutarti ad automatizzare molte cose su Linux e imparare a scrivere script Bash è un investimento utile.