Bash skripty jsou důležitou součástí práce správce systému. Umožňují vám automatizovat běžné i kritické úkoly.
Jednou z nejlepších věcí na skriptech je, že mohou běžet nezávisle bez lidského zásahu, ale někdy může být náročné automatizovat úlohy, které vyžadují uživatelská hesla. Podívejme se, jak můžete bezpečně automatizovat skripty, které vyžadují hesla, aniž by došlo k ohrožení zabezpečení.
Vytvoření jednoduchého skriptu
Předpokládejme, že chcete vytvořit jednoduchý skript, který zálohuje vaši domovskou složku Linuxu na vzdálené místo, abyste mohli svá data snadno obnovit v případě ztráty dat.
Začněte vytvořením souboru skriptu Bash ve vaší domovské složce, pomocí dotykového příkazu nebo jakoukoli jinou metodu a pojmenujte ji backup_home.sh. Neváhejte použít libovolný název a adresář podle svých představ.
Skript používá rsync Command, výkonný nástroj pro kopírování souborů, za účelem zálohování všech souborů ve vašem místním domovském adresáři na vzdálený server.
Zkopírujte obsah následujícího skriptu a vložte jej do souboru Bash. Nezapomeňte nahradit uživatele john správným jménem vašeho místního domácího uživatele. Zadejte také správné uživatelské jméno a IP adresu vzdáleného serveru.
#!/bin/bash
#Zkopírujte data na vzdálený server
rsync -avl --mkpath /home/john uživatelské_jméno@dálkový_server/home/Backup
Pokud nemáte vzdálený server k testování, můžete jednoduše nainstalujte VirtualBox a nastavte VM na vašem místním počítači. Použijte hosta virtuálního počítače jako vzdálený server.
Uložte soubor. Chcete-li skript spustit, musíte mu udělit oprávnění ke spuštění pomocí příkazu sudo chmod 755. Všichni uživatelé mohou spustit skript, ale pouze uživatelé sudo mohou soubor upravit.
Nakonec spusťte skript Bash z terminálu pomocí příkazu:
./backup_home.sh
Kdykoli spustíte tento skript, budete vyzváni k zadání hesla vzdáleného serveru. To není ideální, pokud chcete skript spustit bez lidského zásahu, jako například při použití Cronu.
Automatické přihlášení pomocí hesla
Nainstalujte sshpass, neinteraktivního poskytovatele hesel, na vašem místním počítači nebo počítači, ze kterého budete skript spouštět.
V distribucích založených na Debianu
Pokud používáte distribuci založenou na Debianu, jako je Ubuntu, Pop!_OS a Lubuntu:
sudo apt Aktualizace && sudo apt Nainstalujte sshpass
Na RHEL a Fedoře
dnf Nainstalujte sshpass
Po instalaci sshpass upravte skript tak, aby vypadal následovně.
#!/bin/bash
#Zkopírujte data na vzdálený server
sshpass -p "vaše heslo" rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Zde zadáte heslo jako prostý text. Je zřejmé, že to není ideální způsob, protože to není bezpečné a není to dobrá praxe. Pokud se scénář někdy dostane do nesprávných rukou, máte velké potíže.
Aby to bylo bezpečnější, použijeme GnuPG, bezpečný a open source šifrovací nástroj.
Šifrování vašeho hesla
GnuPG je standardně nainstalováno na většině systémů Linux, ale v případě, že není nainstalováno ve vašem systému, Zde je návod, jak nainstalovat GnuPG.
Vytvořte skrytý soubor s názvem tajemství pomocí příkazu dotknout se .tajemství. Protože jsme soubor ve výchozím nastavení skryli jako další bezpečnostní opatření, můžete to udělat následovně zobrazit skryté soubory v systému Linux.
Do tajného souboru zadejte heslo svého vzdáleného počítače a uložte jej.
Dále zašifrujte soubor pomocí gpg příkaz.
sudogpg.tajemství
Budete vyzváni k zadání bezpečného a silného přístupového hesla pro otevření zašifrovaného souboru.
GnuPG vytvoří nový soubor s příponou .gpg připojené ke starému názvu souboru. Váš nový název souboru by nyní měl být secrets.gpg, za předpokladu, že jste použili tajemství název souboru.
Pokud si prohlížíte obsah secrets.gpg pomocí kočka příkazu, zobrazí se vám nějaký nesmyslný text, který ukáže, že vaše heslo je zašifrováno.
Chcete-li zobrazit obsah souboru jako prostý text, musíte jej dešifrovat pomocí následujícího příkazu (budete vyzváni k zadání hesla, které jste nastavili během šifrování):
gpg-dqtajemství.gpg
Použití šifrovaného hesla ve vašem skriptu
Chcete-li ve skriptu použít šifrované heslo, aktualizujte skript následovně:
#!/bin/bash
#Zkopírujte data na vzdálený server
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john uživatelské_jméno@dálkový_server/home/Backup
Spusťte zálohovací skripty znovu a tentokrát nebudete vyzváni k zadání hesla.
Automatizujte úlohy pomocí Bash skriptů
GnuGP se často používá pro zabezpečení citlivých souborů a dat na vašem PC a je také skvělým nástrojem pro zabezpečení hesel v automatických Bash skriptech na Linuxu.
Se skripty Bash můžete dělat spoustu věcí. Bash je mocný nástroj, který vám může pomoci zautomatizovat spoustu věcí v Linuxu a naučit se psát skripty Bash se vyplatí.