Portál AbcLinuxu, 30. dubna 2025 14:33
Tento zápisek pojednává o vytvoření adresáře, jehož obsah bude (automaticky) šifrován pomocí GNU Privacy Guard. Skripty nejsou dokonalé. Můžete si s nimi dělat, co chcete. Inspiroval jsem se (zdroj): http://legroom.net/howto/gnupg.
Když už jsem se pustil do psaní skriptů pro (de)šifrování, tak mi nedá, abych zde neuvedl vylepšenou verzi těchto skriptů. 2. aktualizace: místo příkazu rm
používám bezpečnější příkaz srm
(secure remove, secure_deletion toolkit). Též může být třeba použít příkazy smem
, sfill
a sswap
:
#!/bin/bash # zasifruj.sh source /cesta/nastaveni || { echo 'Nepodarilo se nacist soubor s nastavenim' ; exit -1; } GLOBIGNORE='*.gpg:.*.gpg' for soubor in * .* ; do if [ -f "${soubor}" ] ; then gpg --homedir "${KLICE}" --encrypt-files --batch -q \ --recipient 'Jmeno Prijmeni' "${soubor}" if [ $? -eq 0 ] ; then case "${1}" in [aA]) srm "${soubor}" ;; esac fi fi done
Skript pro dešifrování:
#!/bin/bash # desifruj.sh source /cesta/nastaveni || { echo 'Nepodarilo se nacist soubor nastaveni' ; exit -1; } for soubor in *.gpg .*.gpg ; do if [ -f "${soubor}" ] ; then echo 'heslo' | gpg --homedir "${KLICE}" --passphrase-fd 0 --decrypt-file --batch "${soubor}" if [ $? -eq 0 ] ; then case "${1}" in [aA]) srm "${soubor}" ;; esac fi fi done
nastaveni:
KLICE='/cesta/.gnupg'
Budeme potřebovat program GNU Privacy Guard a jim vygenerované klíče, jeden veřejný a jeden privátní. Asymetrické šifrování jsem zvolil, protože lze data zašifrovat veřejným klíčem bez jakékoli znalosti hesla (passphrase). K dešifrování už je heslo nutné.
Používejte silná hesla (tzn. NE slovo ze slovníku apod.), která nikdy nezapomenete. Adresáři (a jeho obsahu) obsahující data pro program GNU Privacy Guard nastavte oprávnění hodně restriktivně -- např. pomocí chmod -R go-rwx ~/.gnupg
. Je dobrou myšlenkou mít (privátní) klíč(e) na jiném médiu, než jsou zašifrovaná data.
Následují dva skripty pro šifrování/dešifrování. Šifrují se všechny soubory v aktuálním adresáři, které nekončí gpg. Dešifrují se všechny soubory v aktuálním adresáři končíčí gpg. A nyní už slíbené skripty + jeden "konfigurační soubor":
# nastaveni # Spolecne nastaveni k zasifruj.sh a desifruj.sh KLICE='/cesta/.gnupg'
Skript pro zašifrování dat:
#!/bin/bash # zasifruj.sh # Skript pro zasifrovani obsahu aktualniho adresare. # Vsimnete si volby -A programu ls # 1. parametr skriptu rika, zda maji byt nesifrovane soubory po zasifrovani vymazany nebo ne. # Nastaveni (cesta) a klice se budou brat z promenne KLICE. source nastaveni case "${1}" in [aA]) gpg --homedir "${KLICE}" --encrypt-files --batch -q \ --recipient 'Jmeno Prijmeni majitele verejneho klice' $(ls -A | grep -v gpg$) rm -f $(ls -A | grep -v gpg$) echo '' echo 'Nezasifrovane soubory vymazany.' echo '' ;; *) gpg --homedir "${KLICE}" --encrypt-files --batch -q \ --recipient 'Jmeno Prijmeni majitele klice' $(ls -A | grep -v gpg$) echo '' echo 'Nezasifrovane soubory nebyly vymazany.' echo '' ;; esac
Druhý skript pro dešifrování obsahu aktuálního adresáře. Budete dotázáni na heslo (passphrase) k privátnímu klíči:
#!/bin/bash # desifruj.sh # slouzi pro desifrovani souboru v aktualnim adresari source nastaveni gpg --homedir "${KLICE}" --decrypt-file *.gpg .*.gpg echo 'Smazat zasifrovane soubory (a/n)?' read vstup case "${vstup}" in [aA]) rm *.gpg .*.gpg echo '' echo 'Zasifrovane soubory byly vymazany.' echo '' ;; *) echo '' echo 'Zasifrovane soubory NEBYLY vymazany.' echo '' ;; esac
Pokud do skriptu, který se spouští před vypnutím/restartováním počítče umístíte něco takového:
ADR_ZASIF='/cesta' cd "${ADR_ZASIF}" su prihl_jmeno -c '/cesta/zasifruj.sh a'
Tak se vám tímto před vypnutím/restartem zašifruje obsah adresáře ${ADR_ZASIF}
, což je určitě milé.
Tiskni
Sdílej:
Pokud jsem ten odkaz dobře pochopil, tak se jedná o šifrování na úrovni systému souborů. Já zůstávám na úrovni souborů.
Děkuju.
nebo LUKS.Přesně. Ono občas i samotné názvy souborů můžou leccos napovědět.
shopt -s dotglob #hviezdička bude fungovať aj pre bodkované súbory
rm -f ./!(*.gpg) # Zmažeme (rm môžeme nahradiť iným príkazom) súbory v aktuálnom adresári nekončiace na gpg a nebudú nám vadiť názvy súborov začínajúce mínusom.
Aj to pravdepodobne bude mať chyby (čo ak tam súbory nekončiace .gpg nebudú?)
Čím viac poznám bash, tým menej si myslím, že sa v tom dajú písať skripty, ktoré prežijú rôzne krajné prípady.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.