Crypto File System - Sesam schließe dich!
Installation von CFS
Vorbetrachtung
Ich habe im Verzeichnis /mnt/export freien Plattenplatz. Dort wird später der dem User joern gehörendende verschlüsselbare Ordner untergebracht. Wenn ich, der User joern, dann dieses Verzeichnis aufschließe, soll der entschlüsselte Inhalt in meinem Homeverzeichnis unter dem Ordner Crypt zugänglich sein. Den Ordner /home/joern/Crypt hatten wir ja schon für den Test angelegt. So legen wir noch den Ordner export an und übertragen die Rechte dem User joern:
mkdir /mnt/export chown joern:users /mnt/export
Achtung: Mit dem so angewendeten chown-Befehl (wechsle Eigner) bekommen der Benutzer und seine Gruppe Eigentumsrechte an diesem Verzeichnis. Nun verwenden die Distributionen aber unterschiedliche Gruppen für die normalen User. Manche nennen die Gruppe users und andere wiederum geben der Gruppe die gleiche Bezeichnung wie dem User.
Unseren Gruppennamen stellen wir am schnellsten durch die Eingabe von id fest.
id uid=500(joern) gid=500(joern) Gruppen=500(joern)
so verändert sich der Befehl zu:
chown joern:joern /mnt/export
Bezug des RPM-Paketes
Die Software erhält man als RPM-Paket unter http://sourceforge.net/projects/cfsnfs/ Die zum Zeitpunkt des Enstehens dieses Artikels aktuelle Version trägt die Bezeichnung cfs-1.4.1-5.i386.rpm.
Wir installieren nach der uns vom Abschnitt NFS bekannten Weise:
rpm -ihv /Pfad_zum_Paket/cfs-y.x.z-n.i386.rpm
Mit der Installation bekommen wir die Verzeichnisse /crypt und /.cfsfs angelegt. Da ich das Filesystem anders mounten will, lösche ich diese erst einmal:
rmdir /.cfsfs /crypt
Auch wurde die Datei /etc/exports modifiziert. Wir bleiben root, entfernen die Einträge, auch die von unserem letzten Test, und beschreiben die Datei wie folgt:
/mnt/export localhost(rw)
Ebenfalls wurden bei der Installation ein Start-/Stopp-Skript angelegt und es wurden Links in die Runlevel gelegt.
Kontrolle:
ls -l /etc/rc5.d |grep cfs
oder auch
rpm -qal |grep cfsd
In diesem Skript ist aber außerdem der cfs-nfs-Mountaufruf enthalten. Diesen müssen wir noch im Pfad anpassen. Dazu suchen wir in der im Editor geöffneten Datei /etc/rc.d/init.d/cfsd folgenden Eintrag unter "Starting Crypto Filesystem":
/bin/mount -o port=3049,intr localhost:/.cfsfs /crypt >/dev/null 2>&1
und korrigieren die Verzeichnisse nach unseren Bedürfnissen:
/bin/mount -o port=3049,intr localhost:/mnt/export/ /home/joern/crypt > /dev/null 2>&1
und unter "Stopping Crypto filesystem: " ändern wir die umount-Anweisung zu:
umount /home/joern/crypt
Am besten, wir fahren jetzt die Dienste wie folgt herunter und wieder herauf:
/etc/init.d/cfsd stop /etc/init.d/nfs stop /etc/init.d/nfs start /etc/init.d/nfs reload /etc/init.d/cfsd start
Jetzt sollte keine Fehlermeldung mehr kommen und wir sind mit dem system-administrativen Teil fertig.
CFS-Administration
Die wichtigsten Befehle für die Administration des CFS sind:
cmkdir [Option] <Exportverzeichnis/Verzeichnisname> Erstellen des verschlüsselten Verzeichnisses (3DES)
Optionen:
Ohne: Triple DES
-b: Blowfish
cattach [Option] <Home/Verzeichnisname> Öffnen oder Anlegen eines virtuellen Verzeichnisses
Optionen:
-t n: Aushängen nach n Minuten;
-i n: Löschen nach n Minuten Inaktivität
cdetach <Home/Verzeichnisname> Schließen des veschlüsselten Verzeichnisses
cpasswd Ändern der Passwortphrase, min. 16 Zeichen
Unser Beispiel
Erstellen eines verschlüsselbaren Haupt-Verzeichnisses, einer Art Container, im Export-Pfad:
cmkdir /mnt/export/datasafe
und Aufforderung zur Passphraseneingabe.
Anlegen (bzw.Öffnen) einer virtuellen Datei:
cattach /mnt/export/datasafe cryptfile
Anmerkung:Es wird das Verzeichnis cryptfile unter /home/joern/crypt gemountet.
Verschließen dieser Datei:
cdetach cryptfile
Passwortwechsel:
cpasswd /mnt/export/datasafe
Wie sieht es in den Verzeichnissen aus?
Der das Verzeichnis besitzende User benutzt es wie ein gewöhnliches Verzeichnis.
cd crypt ls -l insgesamt 4 drwx------ 2 joern joern 4096 Okt 11 16:55 cryptfile cd cryptfile ls -l insgesamt 20 -rwxr-xr-x 1 joern joern 19280 Okt 1 2001 ext2_acl.html
Im Export-Verzeichnis sieht es zu gleichen Zeit so aus:
ls -la /mnt/export/datasafe insgesamt 44 drwxrwxr-x 2 joern joern 4096 Okt 11 16:55 . drwxr-xr-x 3 joern users 4096 Okt 11 16:01 .. -rw-rw-r-- 1 joern joern 8 Okt 11 16:01 ... -rwxr-xr-x 1 joern joern 19280 Okt 1 2001 577d5e95d3bac66de412d108480e85c5 -rw-rw-r-- 1 joern joern 1 Okt 11 16:01 ..c -rw-rw-r-- 1 joern joern 32 Okt 11 16:55 ..k lrwxrwxrwx 1 joern joern 8 Okt 11 16:07 .pvect_577d5e95d3bac66de412d108480e85c5 -> 8bd5beae -rw-rw-r-- 1 joern joern 7 Okt 11 16:01 ..s
Das für den User geöffnete crypt-Verzeichnis aus der Sicht von root:
# ls -la /home/joern/crypt ls: /home/joern/crypt/cryptfile: Die Operation ist nicht erlaubt insgesamt 9 drwxrwxrwx 4 root root 8192 Okt 12 16:11 . drwx------ 122 joern joern 8192 Okt 12 16:24 .. # ls -la /home/joern/crypt/cryptfile ls: /home/joern/crypt/cryptfile/ext2_acl.html: Die Operation ist nicht erlaubt insgesamt 5 drwx------ 2 joern joern 4096 Okt 11 16:55 . drwxrwxrwx 4 root root 8192 Okt 12 16:11 .. # more /home/joern/crypt/cryptfile/ext2_acl.html /home/joern/crypt/cryptfile/ext2_acl.html: Die Operation ist nicht erlaubt # cp /home/joern/crypt/cryptfile/ext2_acl.html /root cp: Aufruf von stat für »/home/joern/crypt/cryptfile/ext2_acl.html« nicht möglich: Die Operation ist nicht erlaubt
Hinweis: Lösche niemals mittels rm
die Dateien im Export-Verzeichnis, während der NFS-Daemon aktiv ist.
Über den Zaun geschaut
Nicht ganz so aufregend ist die Installation in der Debian-Distribution:
Wir wählen im Tool "dselect" das cfs-Paket aus. Es ist Bestandteil dieser Distribution. Mit diesem Paket wird gleichzeitig der NFS-Kernelserver zur Installation markiert. Nach dem Installieren dieser Pakete sind von beiden deren Start-/Stopp-Skripte in die Runlevels verlinkt. Der manuelle Eingriff bei dieser Installtion beschränkt sich auf die Änderung der Export- und Mountverzeichnisse nach unsere Wünschen. Die Lage dieser Verzeichnisse wird dem cfsd-Start-/Stopp-Skript dann über Variablen, welche in der Datei /etc/cfs.conf mit dem Pfaden verknüft sind, mitgeteilt.