Questa mattina mi son dedicato alla criptazione di file e cartelle. Ho usato due ottimi programmi Encfs e Fuse.
Installazione
Per prima cosa bisogna installare i suddetti programmi:
sudo apt-get install encfs fuse-utils
Successivamente deve essere caricato il modulo kernel “fuse”:
sudo modprobe fuse
Se volete che questo modulo venga caricato automaticamente all'avvio della macchina inserite la parola “fuse” alla fine del file “/etc/modules”.
Creazione e utilizzo del disco cifrato
Avviate la procedura di creazione del disco criptato virtuale e seguite le istruzioni con il comando:
sudo encfs --pubblic ~/.cifra ~/cifra
Con lo stesso comando si effettua il montaggio del disco cifrato, decriptando i dati in esso contenuti. Nel esempio di sopra la cartella “cifra/” conterrà i dati decriptati mentre la cartella “.cifra/” conterrà i dati criptati e la chiave casuale di criptazione. Purtroppo nella distro Ubuntu bisogna essere loggati come "r00t" per poter visualizzare e inserire file e directory nella cartella cifrata. Il problema viene risolto, quindi si potrà agire come normale utente, aggiungendo l'utente nel gruppo fuse:
sudo adduser your_username fuse
Altra soluzione di utilizzare l'opzione "--public". Il comando per smontare il disco cifrato è:
sudo /usr/bin/fusermount -u cifra/
Infine un'altra nozione importante è il comando per cambiare la password del disco cifrato: encfsctl password cartella_criptata
Lo script fusencfs
Per comodità ho creato un Nautilus-script per montare e smontare comodamente attraverso delle interfaccie grafiche.
#!/bin/bash
#
# AUTHOR: Maurizio di NuvoleSparse
#
# License: GNU General Public version 2 or any later version.
# This program comes with ABSOLUTELY NO WARRANTY; for details
# see the COPYING file or visit "http://www.gnu.org/licenses/gpl.html".
# This is free software, and you are welcome to redistribute it under
# certain conditions. See the GPL license for details.
#
# Dependence:
# zenity
# fuse-utils
# encfs
#
usa_printf(){
inizio=0
fine=1024
p=1
while [ $p != ultima ]; do
printf "${temp:inizio:fine}" |
zenity --text-info --title="gfusencfs - \
parte $p" &
inizio=$(( inizio+1024 ))
fine_ipotetica=$(( inizio+fine ))
if [ ${#temp} -lt $fine_ipotetica ]; then
p="ultima"
printf "${temp:inizio:fine}" | zenity --text-info \
--title="gfusencfs - parte $p"
break
fi
p=$(( p+1 ))
done
}
##main
## configura variabili
CARTELLA_CRIPTATA="$HOME/.cifra"
CARTELLA_DECRIPTATA="$HOME/cifra"
mkdir $CARTELLA_DECRIPTATA
## passphrase per la decriptazione e mount della cartella
if zenity --entry --title="gfusencfs" --text="Inserire la password:" \
--hide-text | encfs -S $CARTELLA_CRIPTATA $CARTELLA_DECRIPTATA \
&>>/tmp/gfusencfs.log; then
## mostra la cartella decriptata
nautilus $CARTELLA_DECRIPTATA --no-desktop
## creazione icona di notifica
zenity --notification --title="gfusencfs" --text="Clicca \
per smontare il disco."
## termina tutte le applicazione aperte nella cartella decriptata
fuser -k $CARTELLA_CRIPTATA
## umount della cartella decriptata
fusermount -u $CARTELLA_DECRIPTATA \
2>>/tmp/gfusencfs.log && zenity --info --text="Il disco è smontato \
correttamente\!" --title="gfusencfs"
fi
rmdir $CARTELLA_DECRIPTATA
if [ -s "/tmp/gfusencfs.log" ]; then
temp="$(cat "/tmp/gfusencfs.log")"
if [ ${#temp} -gt 1024 ]; then
usa_printf
else
cat "/tmp/gfusencfs.log" | \
zenity --title="Errore - gfusencfs"\
--text-info
fi
rm -f /tmp/gfusencfs.log || zenity --title="gfusencfs" --error\
--title="Attenzione"\
--text="Non e' stato possibile rimuovere il file /tmp/gfusencfs.log! :-("
fi
exit 0Attenzione!
Consiglio a tutti di farvi un bel backup dei dati da criptare.
Aggiornamento del 06 Luglio 2007
Se avete problemi con i permessi della cartella in cui verrà montata il disco virtuale cifrato, nell'esempio di sopra ~/cifra provate a cambiare il gruppo di appartenenza del file /dev/fuse da root a fuse, col seguente comando:
sudo chown root:fuse /dev/fuse
e riavviate la macchina.
Ultimo aggiornamento 24 Ottobre 2008