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