Bash skripti so pomemben del dela sistemskega skrbnika. Omogočajo vam avtomatizacijo tako vsakdanjih kot kritičnih nalog.
Ena najboljših stvari pri skriptih je, da se lahko izvajajo neodvisno brez človeškega posredovanja, včasih pa je lahko zahtevno avtomatizirati naloge, ki zahtevajo uporabniška gesla. Poglejmo, kako lahko varno avtomatizirate skripte, ki zahtevajo gesla, ne da bi pri tem ogrozili varnost.
Ustvarjanje preprostega skripta
Predpostavimo, da želite ustvariti preprost skript, ki varnostno kopira vašo domačo mapo Linux na oddaljeno lokacijo, tako da lahko preprosto obnovite svoje podatke v primeru izgube podatkov.
Začnite z ustvarjanjem datoteke skripta Bash v domači mapi, z uporabo ukaza na dotik ali katero koli drugo metodo in jo poimenujte backup_home.sh. Uporabite poljubno ime in imenik, ki vam je všeč.
Skript uporablja rsync ukaz, zmogljivo orodje za kopiranje datotek, za varnostno kopiranje vseh datotek v lokalnem domačem imeniku na oddaljeni strežnik.
Kopirajte vsebino naslednjega skripta in jo prilepite v datoteko Bash. Ne pozabite zamenjati uporabnika john s pravilnim imenom vašega lokalnega domačega uporabnika. Navedite tudi pravilno uporabniško ime in naslov IP za oddaljeni strežnik.
#!/bin/bash
#Kopiraj podatke na oddaljeni strežnik
rsync -avl --mkpath /home/john uporabniško_ime@oddaljeno_server/home/Backup
Če nimate oddaljenega strežnika za testiranje, lahko preprosto namestite VirtualBox in nastavite VM na vašem lokalnem računalniku. Uporabite gosta VM kot oddaljeni strežnik.
Shranite datoteko. Če želite izvesti skript, mu morate z ukazom podeliti dovoljenje za izvajanje sudo chmod 755. Vsi uporabniki lahko izvajajo skript, vendar lahko samo uporabniki sudo spreminjajo datoteko.
Končno izvedite skript Bash iz terminala z ukazom:
./backup_home.sh
Kadar koli zaženete ta skript, boste pozvani, da vnesete geslo oddaljenega strežnika. To ni idealno, če želite zagnati skript brez človeškega posredovanja, na primer pri uporabi programa Cron.
Samodejna prijava z geslom
Namestite sshpass, neinteraktivnega ponudnika gesel, na vašem lokalnem računalniku ali računalniku, iz katerega boste izvajali skript.
Na distribucijah, ki temeljijo na Debianu
Če uporabljate distribucijo, ki temelji na Debianu, kot so Ubuntu, Pop!_OS in Lubuntu:
sudo apt nadgradnja && sudo apt namestite sshpass
Na RHEL in Fedora
dnf namestite sshpass
Po namestitvi sshpass spremenite skript tako, da bo videti takole.
#!/bin/bash
#Kopiraj podatke na oddaljeni strežnik
sshpass -p "Vaše geslo" rsync -avl --mkpath /home/john uporabniško_ime@oddaljeni_strežnik/home/Backup
Tukaj vnesete geslo v navadnem besedilu. Očitno to ni idealen način, saj ni varen in ni dobra praksa. Če scenarij kdaj pristane v napačnih rokah, ste v velikih težavah.
Za večjo varnost bomo uporabili GnuPG, varno in odprtokodno šifrirno orodje.
Šifriranje vašega gesla
GnuPG je privzeto nameščen v večini sistemov Linux, vendar v primeru, da ni nameščen v vašem sistemu, tukaj je opisano, kako namestiti GnuPG.
Ustvarite skrito datoteko z imenom skrivnosti z uporabo ukaza dotik .skrivnosti. Ker smo datoteko privzeto skrili kot dodaten varnostni ukrep, lahko to storite tako ogled skritih datotek v sistemu Linux.
V datoteko s skrivnostmi vnesite geslo oddaljenega računalnika in ga shranite.
Nato šifrirajte datoteko z uporabo gpg ukaz.
sudogpg.skrivnosti
Pozvani boste, da vnesete varno in močno geslo za odpiranje šifrirane datoteke.
GnuPG bo ustvaril novo datoteko s pripono .gpg dodano staremu imenu datoteke. Vaše novo ime datoteke bi moralo biti skrivnosti.gpg, ob predpostavki, da ste uporabili skrivnosti Ime datoteke.
Če si ogledate vsebino secrets.gpg z uporabo mačka ukaz, se vam bo prikazalo nekaj blebetanja, ki bo pokazalo, da je vaše geslo šifrirano.
Če si želite ogledati vsebino datoteke v navadnem besedilu, jo boste morali dešifrirati z naslednjim ukazom (pozvani boste, da vnesete geslo, ki ste ga nastavili med šifriranjem):
gpg-dqskrivnost.gpg
Uporaba šifriranega gesla v vašem skriptu
Če želite uporabiti šifrirano geslo v skriptu, posodobite skript na naslednji način:
#!/bin/bash
#Kopiraj podatke na oddaljeni strežnik
gpg -dq skrivnosti.gpg | sshpass rsync -avl --mkpath /home/john uporabniško_ime@oddaljeno_server/home/Backup
Ponovno zaženite varnostne skripte in tokrat ne boste pozvani k vnosu gesla.
Avtomatizirajte opravila s skripti Bash
GnuGP se pogosto uporablja za zaščito občutljivih datotek in podatkov v vašem računalniku in je tudi odlično orodje za zaščito gesel v avtomatiziranih skriptih Bash v sistemu Linux.
S skripti Bash lahko naredite marsikaj. Bash je zmogljivo orodje, ki vam lahko pomaga avtomatizirati veliko stvari v Linuxu, učenje pisanja skriptov Bash pa je vredna naložba.