3 581
contributi
S3v (discussione | contributi) (+ versioni compatibili) |
|||
(8 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | {{Versioni compatibili|Jessie|Stretch|Buster}} | ||
== Introduzione == | == Introduzione == | ||
Questa guida contiene solo due esempi di [[script]] Bash per la gestione attraverso cryptsetup di volumi cifrati secondo lo standard [http://code.google.com/p/cryptsetup/ LUKS] (Linux Unified Keys Setup).<br/> | Questa guida contiene solo due esempi di [[script]] Bash per la gestione attraverso cryptsetup di volumi cifrati secondo lo standard [http://code.google.com/p/cryptsetup/ LUKS] (Linux Unified Keys Setup).<br/> | ||
Riga 5: | Riga 5: | ||
== Automatizzazione dei passi necessari == | == Automatizzazione dei passi necessari == | ||
Assumiamo di avere creato correttamente il volume criptato, la chiave e il filesystem. Ora dobbiamo solo creare uno script da eseguire come [[root]], per fare tutte le operazioni di creazione e montaggio, o viceversa di smontaggio e rimozione automaticamente.<br/> | Assumiamo di avere creato correttamente il volume criptato, la chiave e il filesystem. Ora dobbiamo solo creare uno script da eseguire come [[root]], per fare tutte le operazioni di creazione e montaggio, o viceversa di smontaggio e rimozione automaticamente.<br/> | ||
Di seguito sono riportati due script, uno per il caso di file montato ricorsivamente, l'altro per il caso di periferica ordinaria. | Di seguito sono riportati due script, uno per il caso di file montato ricorsivamente, l'altro per il caso di periferica ordinaria. | ||
=== Script per file immagine === | === Script per file immagine === | ||
<pre> | Con [[privilegi di amministrazione]] copiare il file successivo in <code>/usr/local/sbin</code>, assegnandogli utente e gruppo [[root]] e permessi di esecuzione, dopodiché eseguirlo sempre con privilegi. | ||
Si deve però modificare la variabile dello script seguente per utilizzare la propria home. | |||
<pre> | |||
#!/bin/bash | #!/bin/bash | ||
HOME_UTENTE="/home/nomeutente" ### <-- DA MODIFICARE CON LA PROPRIA HOME | |||
#Utilizzo di un file immagine come periferica criptata | |||
case $1 in | case $1 in | ||
monta) | monta) | ||
if [ -f | if [ -f "${HOME_UTENTE}/immagine_cifrata" ]; then | ||
echo "Impostazione periferica ricorsiva (loop)." | echo "Impostazione periferica ricorsiva (loop)." | ||
loopdev=$(losetup -f) | |||
losetup "$loopdev" "${HOME_UTENTE}/immagine_cifrata" | |||
else | |||
echo "File: \"${HOME_UTENTE}/immagine_cifrata\" non trovato!" >&2 | |||
exit 4 | |||
fi | fi | ||
if [ $? = 0 ]; then | if [ $? = 0 ]; then | ||
cryptsetup open --type luks "$loopdev" criptata | |||
else | else | ||
echo "Impostazione periferica ricorsiva non riuscita." | echo "Impostazione periferica ricorsiva non riuscita." >&2 | ||
exit 3 | |||
fi | fi | ||
if [ $? = 0 ]; then | if [ $? = 0 ]; then | ||
mount /dev/mapper/criptata / | if ! [ -e "${HOME_UTENTE}/criptata" ]; then | ||
mkdir "${HOME_UTENTE}/criptata" | |||
fi && | |||
mount /dev/mapper/criptata "${HOME_UTENTE}/criptata" | |||
else | |||
echo "Impotazione periferica non criptata non riuscita." >&2 | |||
losetup -d "$loopdev" | |||
exit 2 | |||
fi | fi | ||
if [ $? !=0 ]; then | if [ $? != 0 ]; then | ||
echo "Impossibile montare la periferica criptata." | echo "Impossibile montare la periferica criptata." >&2 | ||
cryptsetup close criptata | |||
losetup -d "$loopdev" | |||
exit 1 | |||
fi | fi | ||
;; | ;; | ||
smonta) | smonta) | ||
umount /dev/mapper/criptata | umount /dev/mapper/criptata | ||
if [ $? = 0 ]; then | if [ $? = 0 ]; then | ||
echo "Smontaggio riuscito" | |||
cryptsetup close criptata | |||
else | else | ||
echo "Smontaggio non riuscito." | echo "Smontaggio non riuscito." >&2 | ||
exit 3 | |||
fi | fi | ||
if [ $? = 0 ]; then / | if [ $? = 0 ]; then | ||
loopdev=$(losetup -n -O "NAME" -j "${HOME_UTENTE}/immagine_cifrata") && | |||
losetup -d "$loopdev" | |||
if [ $? = 0 ]; then | |||
echo "Periferica criptata chiusa" | |||
touch "${HOME_UTENTE}/criptata.img" | |||
else | |||
echo "Rimozione periferica ricorsiva non riuscita." >&2 | |||
exit 1 | |||
fi | |||
else | |||
echo "Chiusura periferica criptata non riuscita" >&2 | |||
exit 2 | |||
fi | fi | ||
;; | ;; | ||
Riga 57: | Riga 85: | ||
exit 1 | exit 1 | ||
;; | ;; | ||
esac</pre> | esac | ||
</pre> | |||
Nello script è stato inserito il comando <code>touch</code> per impostare all'ora attuale le date di ultimo accesso e modifica del file <code>criptata.img</code>.<br/> | Nello script è stato inserito il comando <code>touch</code> per impostare all'ora attuale le date di ultimo accesso e modifica del file <code>criptata.img</code>.<br/> | ||
Nella prassi si è rivelata importante una modifica esplicita di queste informazioni del file, per sapere quali file cifrati sono stati aperti di recente, nel caso se ne vogliano fare delle copie di backup.<br/> | Nella prassi si è rivelata importante una modifica esplicita di queste informazioni del file, per sapere quali file cifrati sono stati aperti di recente, nel caso se ne vogliano fare delle copie di backup.<br/> | ||
Riga 63: | Riga 92: | ||
=== Script per periferica ordinaria === | === Script per periferica ordinaria === | ||
In questo esempio viene usata la prima partizione di una scheda di memoria SD (<code>/dev/mmcblk0p1</code> con lettore compatibile con il modulo <code>sdhci</code>). | Con [[privilegi di amministrazione]] copiare il file successivo in <code>/usr/local/sbin</code>, assegnandogli utente e gruppo [[root]] e permessi di esecuzione, dopodiché eseguirlo sempre con privilegi. | ||
<pre>#!/bin/bash | |||
Si deve però modificare la variabile dello script seguente per utilizzare la propria home. | |||
In questo esempio inoltre viene usata la prima partizione di una scheda di memoria SD (<code>/dev/mmcblk0p1</code> con lettore compatibile con il modulo <code>sdhci</code>), se si utilizza una diversa memoria si deve cambiare il percorso. | |||
<pre> | |||
#!/bin/bash | |||
HOME_UTENTE="/home/nomeutente" ### <-- DA MODIFICARE CON LA PROPRIA HOME | |||
PATH_MEMORIA="/dev/mmcblk0p1" ### <-- DA MODIFICARE CON IL PATH /dev/... DELLA PROPRIA MEMORIA | |||
case $1 in | case $1 in | ||
monta) | monta) | ||
echo "Verifica presenza SD:" | echo "Verifica presenza SD:" | ||
if [ -b | if [ -b "$PATH_MEMORIA" ] ; then | ||
echo "." | echo "." | ||
else | else | ||
echo "La periferica non è inserita!" | echo "La periferica ($PATH_MEMORIA) non è inserita!" >&2 | ||
exit 2 | exit 2 | ||
fi | fi | ||
if ! [ -e "$HOME_UTENTE"/criptata ]; then | |||
if [ $ | mkdir "$HOME_UTENTE"/criptata | ||
fi | fi && | ||
cryptsetup open --type=luks "$PATH_MEMORIA" criptata && | |||
mount /dev/mapper/criptata "$HOME_UTENTE"/criptata || | |||
{ | |||
echo "Il file system cifrato non può essere montato." >&2 | |||
cryptsetup close criptata | |||
exit 1 | |||
echo "Il file system cifrato non può essere montato." | } | ||
;; | ;; | ||
smonta) | smonta) | ||
#Smonto il file system criptato e controllo che lo smontaggio sia avvenuto correttamente | #Smonto il file system criptato e controllo che lo smontaggio sia avvenuto correttamente | ||
umount /dev/mapper/criptata | umount /dev/mapper/criptata | ||
if [ $? != 0 ]; then | if [ $? != 0 ]; then | ||
echo "Smontaggio non riuscito." | echo "Smontaggio non riuscito." >&2 | ||
exit 2 | |||
fi | fi | ||
#Chiudo il nodo in /dev/mapper e controllo | #Chiudo il nodo in /dev/mapper e controllo | ||
cryptsetup close criptata | |||
if [ $? = 0 ]; then | if [ $? = 0 ]; then | ||
echo "Nodo cifrato in /dev/mapper rimosso." | echo "Nodo cifrato in /dev/mapper rimosso." | ||
else echo "Chiusura periferica criptata non riuscita" | else | ||
echo "Chiusura periferica criptata non riuscita" >&2 | |||
exit 1 | |||
fi | fi | ||
;; | ;; | ||
Riga 106: | Riga 145: | ||
exit 1 | exit 1 | ||
;; | ;; | ||
esac</pre> | esac | ||
</pre> | |||
{{Autori | {{Autori | ||
|Autore = [[Utente:GipPasso|GipPasso]] | |Autore = [[Utente:GipPasso|GipPasso]] | ||
|Verificata_da = | |||
: [[Utente:HAL 9000|HAL 9000]] 10:49, 29 set 2019 (CEST) | |||
|Estesa_da = | |||
|Numero_revisori = 1 | |||
}} | }} | ||
[[Categoria:Filesystem]] | [[Categoria:Filesystem]] | ||
[[Categoria:Crittografia]] | [[Categoria:Crittografia]] | ||
[[Categoria:Bash Scripting]] |
contributi