Crypto File System - Sesam schließe dich!
Es besteht oft der Wunsch, besonders sensible Daten stärker zu schützen als mit den Datei-Rechten von Linux bzw. dem Login-Verfahren des Computers. Das Verschlüsseln eines Verzeichnisses stellt eine solche Lösung dar.
Etwas Window-Feeling
Es ist manchen vielleicht ein bisschen unbequem, zum Öffnen des Verzeichnisses die Kommandozeile zu starten, den Befehl einzutippen und anschließend den Dateibrowser dorthin zu dirigieren. Zum anderen fehlt auch der Hinweis auf ein geöffnetes Verzeichnis.
Darum habe ich ein kleines Skript, welches durch einen KDE-Icon-Klick die Datei öffnet, den Konqueror und ein Hinweis startet und durch einen nächsten Klick das Verzeichnis wieder verschlüsselt, dazugetan.
Ablauf:
Als erstes erstellen wir im Homeverzeichnis einen Ordner für die beiden Skripte und das Hinweisbild: mkdir .cfs
Verzeichnisse und Dateien, deren Name mit einem Punkt beginnen, werden als "versteckte Dateien" bezeichnet. Sie werden durch die a-Option im Listbefehl sichtbar gemacht: ls -al.
Dann kopieren wir die Skripte datasafe.sh, signal.sh und das Bild cfs_offen.png dort hinein:
cp datasafe.sh .cfs cp signal.sh .cfs cp cfs_offen.png .csf
Das Bild muss von den Dateirechten her lesbar, die Skripte müssen zusätzlich noch ausführbar sein. Mit einem chmod 550 .cfs/*ist dem Genüge getan.
Mit der rechten Maustaste klicken wir nun auf den leeren Desktop-Hintergrund und wählen . Es erscheint ein Konfigurationsmenue für die Verknüpfung mit einem Programm. Der erste Reiter trägt die Bezeichnung Allgemein. Hier wählen wir ein Icon-Symbol, z.B. einen Ordner mit dem Blitz und einen Namen, wie DataSafe aus. Danach wählen wir den Reiter Ausführen aus. Unter Befehl suchen wir das Skript datasafe.sh aus, so dass dann folgender Eintrag in der Zeile steht:
/home/joern/.cfs/datasafe.sh
Mit einem Kreuz aktivieren wir die Option .
Als Terminal-Optionen tragen wir zuletzt noch ein:
konsole --vt_sz 50x8 --noframe --noscrollbar --nomenubar --notoolbar -T 'CFS-Kontrollfenster'
Das Skript signal.sh öffnet und schließt einen Bildbetrachter mit einer vordefinierten Anzeige. Um ein eindeutiges Beenden dieses Prozesses zu gewähren, habe ich des Programm xview mit einer anderen Bezeichnung verlinkt, mit der dann der Betrachter auch gestartet wird. Dazu legen wir den Link wie folgt an:
ln -s /usr/X11R6/bin/xview /usr/bin/hinweis
Natürlich können für Dateioperationen auch grafische Tools verwendet werden. Ich z.B. habe mir ein Midnight Commander-Icon auf die Öberfläche geholt, das ich dann per Mausklick in meiner Lieblingskonsole rxvt starte. Dazu wird wieder "Verknüpfung mit Programm" ausgeführt und unter dem Reiter Ausführen der Befehl rxvt -geometry 120x40 -e mc eingetragen.
Funktionsweise der Skripte
datasafe.sh
Es öffnet und verschlüsselt das Verzeichnis, indem es abwechselnd cattach und cdetach aufruft. Wenn das Verzeichnis cryptfile aufgeschlossen ist, so ist es im Verzeichnis crypt sichtbar. Starten wir nun datasafe.sh, so wird nach cryptfile abgefragt und je nach Zustand wird entweder cdetach cryptfile aufgerufen oder cattach /mnt/export/datasafe cryptfile. Mit letzteren Aufruf öffnet sich dann noch der Konqueror in dem datasafe-Verzeichnis und das Skript signal.sh wird aufgerufen, wenn die Passwordeingabe erfolgreich war.
signal.sh
Dieses Skript legt mittels xview (über den Link hinweis) das Hinweisbild cfs_offen.png auf den Desktop und fragt alle fünf Sekunden ab, ob noch eine Datei unter crypt zu sehen ist. Falls nicht, werden dann der Bild-Viewer und das Skript selbst beendet.
Skript 1: datasafe.sh
Download: datasafe.sh
#!/bin/sh # # .cfs/datasafe.sh # Script zum Ein- und Aushaengen des CFS ** J.E. 16.10.2002 # Pfad anpassen: name_crypt=`ls /home/joern/crypt` # obere Hochkommas neben backspace # name_crypt ist der Pfad zu dem datasafe-Verzeichnis # Wenn datasafe in name_crypt gesehen wird, ist das CFS also eingehangen # Achtung: Dieser Vorgang ist je nach Prozessor etwas traege, bitte zwischen # manuellen ab- und zumounten des CFS einige Sekunden lassen case $name_crypt in cryptfile) echo "Das CFS \"datasafe\" wird ausgehangen." cdetach cryptfile sleep 5 exit 0 ;; *) continue ;; esac i=0 while test $i -le 2 do echo -e "\n Passphrase eingeben : \c" cattach /mnt/export/datasafe cryptfile 2> tmpfile.$$ reaktion=`cat tmpfile.$$|tail -1|cut -da -f1` i=`expr $i + 1` case $reaktion in c) echo "Irgendwie vertippt!" sleep 1 ;; Inv) echo "Password erforderlich!" sleep 1 ;; *) echo "OK" sleep 1 nohup konqueror file:/home/joern/crypt/cryptfile & echo "" echo "Moment bitte, starte jetzt den Konqueror." sleep 6 echo "" echo "Starte Kontrollbild:" nohup /home/joern/.cfs/signal.sh & sleep 2 i=3 ;; esac done rm -f tmpfile.$$ exit 0
Skript 2: signal.sh
Download: signal.sh
#!/bin/sh #.cfs/signal.sh # # Kontrolle, ob CFS offen ist. ** J. E. ** 09.10.2002 # Wenn CFS offen ist, Starten eines Hinweisbildes sleep 3 # Der Mountvorgang ist etwas traege, darum auch etwas Verzoegerung hinweis -title Achtung cfs_offen.png & # hinweis ist ein Link zu xview hinweisnr=`ps -e|grep hinweis|cut -b1-5` # obere Hochkommas neben backspace # hinweisnr gibt die Prozess-ID des Hinweisbildes wieder # Kontrolle aller 5 sec. auf offenes Verzeichnis unter crypt, # wenn leer unterhalb crypt beende Programm. while true; do kontrolle=`ls /home/joern/crypt/ |wc -l` if test $kontrolle -gt 0 then echo "cfs ist offen" sleep 5 else echo "cfs ist abgehangen" kill -9 $hinweisnr break fi done

