Bash-scripts zijn een belangrijk onderdeel van het werk van een systeembeheerder. Hiermee kunt u zowel alledaagse als kritieke taken automatiseren.
Een van de beste dingen van scripts is dat ze onafhankelijk kunnen worden uitgevoerd zonder menselijke tussenkomst, maar soms kan het een uitdaging zijn om taken te automatiseren waarvoor gebruikerswachtwoorden nodig zijn. Laten we eens kijken hoe u veilig scripts kunt automatiseren waarvoor wachtwoorden nodig zijn zonder de beveiliging in gevaar te brengen.
Een eenvoudig script maken
Laten we aannemen dat u een eenvoudig script wilt maken dat een back-up maakt van uw Linux-thuismap naar een externe locatie, zodat u uw gegevens gemakkelijk kunt herstellen in geval van gegevensverlies.
Begin met het maken van een Bash-scriptbestand in uw thuismap, met behulp van het aanraakcommando of een andere methode, en geef het een naam back-up_home.sh. Voel je vrij om elke gewenste naam en directory te gebruiken.
Het script gebruikt de rsync commando, een krachtige tool voor het kopiëren van bestanden, om een back-up te maken van alle bestanden in uw lokale thuismap naar een externe server.
Kopieer de inhoud van het volgende script en plak het in uw Bash-bestand. Vergeet niet om de gebruiker john te vervangen door de juiste naam van uw lokale thuisgebruiker. Geef ook de juiste gebruikersnaam en het juiste IP-adres op voor de externe server.
#!/bin/bash
#Kopieer gegevens naar een externe server
rsync -avl --mkpath /home/john gebruikersnaam@op afstand_server/thuis/Back-up
Als u geen externe server heeft om mee te testen, kunt u dat eenvoudig doen installeer VirtualBox en stel een VM in op uw lokale computer. Gebruik de VM-gast als uw externe server.
Bewaar het bestand. Om het script uit te voeren, moet u het de uitvoeringsrechten verlenen met behulp van de opdracht sudo chmod 755. Alle gebruikers kunnen het script uitvoeren, maar alleen de sudo-gebruikers kunnen het bestand wijzigen.
Voer ten slotte het Bash-script uit vanaf de terminal met behulp van de opdracht:
./backup_home.sh
Telkens wanneer u dit script uitvoert, wordt u gevraagd het wachtwoord van de externe server in te voeren. Dit is niet ideaal als u het script wilt uitvoeren zonder menselijke tussenkomst, zoals bij het gebruik van Cron.
Inloggen met wachtwoord automatiseren
Installeren sshpass, een niet-interactieve wachtwoordprovider, op uw lokale pc of de pc waarop u het script uitvoert.
Op op Debian gebaseerde distro's
Als u een op Debian gebaseerde distro gebruikt, zoals Ubuntu, Pop!_OS en Lubuntu:
sudo geschikt update && sudo geschikt installeren sshpass
Op RHEL en Fedora
dnf installeren sshpass
Pas na het installeren van sshpass het script aan zodat het er als volgt uitziet.
#!/bin/bash
#Kopieer gegevens naar een externe server
sshpass -p "je wachtwoord" rsync -avl --mkpath /home/john gebruikersnaam@remote_server/home/Backup
Hier geeft u het wachtwoord in platte tekst op. Het is duidelijk dat dit niet de ideale manier is, aangezien het niet veilig en geen goede gewoonte is. Als het script ooit in verkeerde handen terechtkomt, zit je diep in de problemen.
Om dit veiliger te maken, gebruiken we GnuPG, een veilige en open-source versleutelingstool.
Uw wachtwoord versleutelen
GnuPG wordt standaard op de meeste Linux-systemen geïnstalleerd, maar als het niet op uw systeem is geïnstalleerd, hier leest u hoe u GnuPG installeert.
Maak een verborgen bestand met de naam geheimen met behulp van de opdracht raak .geheimen aan. Aangezien we het bestand standaard verborgen hebben gemaakt als extra beveiligingsmaatregel, kunt u dit als volgt doen bekijk verborgen bestanden op Linux.
Voer in het geheimenbestand het wachtwoord van uw externe pc in en sla het op.
Versleutel vervolgens het bestand met behulp van de gpg commando.
sudogpg.geheimen
U wordt gevraagd een veilige en sterke wachtwoordzin in te voeren om het gecodeerde bestand te openen.
GnuPG zal een nieuw bestand aanmaken met de extensie .gpg toegevoegd aan de oude bestandsnaam. Uw nieuwe bestandsnaam zou nu moeten zijn geheimen.gpg, ervan uitgaande dat je de geheimen bestandsnaam.
Als u de inhoud van secrets.gpg bekijkt met behulp van de kat opdracht, krijgt u wat brabbeltaal te zien om aan te geven dat uw wachtwoord is gecodeerd.
Om de inhoud van het bestand in platte tekst te bekijken, moet u het decoderen met de volgende opdracht (u wordt gevraagd het wachtwoord in te voeren dat u tijdens het coderen hebt ingesteld):
gpg-dqgeheim.gpg
Een versleuteld wachtwoord gebruiken in uw script
Om het versleutelde wachtwoord in het script te gebruiken, werkt u het script als volgt bij:
#!/bin/bash
#Kopieer gegevens naar een externe server
gpg -dq geheimen.gpg | sshpass rsync -avl --mkpath /home/john gebruikersnaam@op afstand_server/thuis/Back-up
Voer de back-upscripts opnieuw uit en deze keer wordt u niet om een wachtwoord gevraagd.
Automatiseer taken met bash-scripts
GnuGP wordt vaak gebruikt voor het beveiligen van gevoelige bestanden en gegevens op uw pc en is ook een geweldig hulpmiddel voor het beveiligen van wachtwoorden in geautomatiseerde Bash-scripts op Linux.
Er is veel dat je kunt doen met Bash-scripts. Bash is een krachtige tool die je kan helpen bij het automatiseren van veel dingen op Linux en het leren schrijven van Bash-scripts is een investering die de moeite waard is.