Die Verschlüsselung kann man recht unproblematisch auf der Komandozeile durchführen. Dazu muss man zu erst herausfinden welche Gerätedatei für den USB-Stick zuständig ist. Normalerweise wird ein externes Gerät unter Ubuntu automatisch gemountet. Daher findet man in der Ausgabe des Befehls mount
eine Zeile mit den Label des Sticks und der Gerätedatei. Im folgenden nehme ich an das es /dev/sdb ist.
Vor der eigentlichen Arbeit sollte man den Stick gleich wieder aushängen und wenn man das für nötig erachtet auch noch komplett überschreiben:
sudo umount /dev/sdb
sudo dd bs=2M if=/dev/urandom of=/dev/sdb
Danach kann man mittels cryptsetup die Verschlüsselung einrichten. Bei mir war Cryptsetup unter Ubuntu 11.10 bereits installiert so das ich hier nicht nachhelfen musste. Wenn es aber nicht vorhanden ist kann man es mittels sudo apt-get install cryptsetup
nachinstallieren.
Mit dem folgenden Befehl wird auf dem Gerät ein Verschlüsselter Container angelegt und dazu einige Metainformationen in einem LUKS-Header abgelegt. Diese Metainformationen ermöglichen es später komfortabel mit der Stick zu arbeiten da er es Linux ermöglicht den Container als solchen zu identifizieren und das nötige Passwort abzufragen:
sudo cryptsetup luksFormat /dev/sdb
sudo cryptsetup luksOpen /dev/sdb crypt_device
sudo mkfs.ext4 /dev/mapper/crypt_device
Der zweite Befehl öffnet den Container und legt eine Gerätedatei /dev/mapper/crypt_device an. Mit dieser kann man dann ganz normal arbeiten und zum Beispiel ein Dateisystem anlegen. Der dritte Befehl tut genau das und legt eine ext4-Partition an.
Jetzt ist man bereits in der Lage seine vertraulichen Dateien zu verschlüsseln. Einfach den verschlüsselten Container mounten:
mount /dev/mapper/crypt_device /mnt
Dateien kopieren und hinterher wieder aufräumen:
umount /dev/mapper/crypt_device
sudo cryptsetup luksClose crypt_device
Beim täglichen Arbeiten würde das manuelle Mappen und Mounten des Containers natürlich stören. Aber das ist auch gar nicht nötig. Ubuntu 11.10 erkennt bei anschließen des Sticks anhand des LUKS-Headers die Verschlüsselung und fragt automatisch das Passwort ab. Fertig!
]]>Für eine genauere Betrachtung von NFS sei auf den entsprechenden Artikel der Wikipedia verwiesen. Hier betrachte ich nur die Umsetzung in einem beispielhaften Netzwerk mit vier Knoten:
Ausgangsbasis ist ein Server unter Debian, ein Notebook unter Ubuntu, ein PC unter Windows und ein Streaming-Client für das Wohnzimmer (Netgear NeoTV 550).
Als Server wird wie üblich der Computer bezeichnet der einen Service, in diesem Fall also Dateien, zur Verfügung stellt. Das hat nichts damit zu tun das man spezielle Serverhardware bräuchte. In meinem Fall ist das Betriebssystem des Servers Debian GNU/Linux. Mittels des Paketmanagers von Debian lassen sich die Packete nfs-kernel-server, nfs-common und portmap installieren:
apt-get install nfs-kernel-server nfs-common portmap
Dieses Paket beinhaltet die Serverkomponenten von NFS. Nach der Installation muss noch die Konfiguration vorgenommen werden und schon ist im besten Fall Kommunikation möglich. In der Datei /etc/exports wird angegeben welche Verzeichnisse über das Netzwerk an welche Rechner freizugeben sind und welche Optionen dabei anzuwenden sind. Jede Zeile definiert dabei eine Freigabe. Beispielhaft gebe ich hier meine Streaminginhalte für ein ganzes Netzwerk frei:
/var/streaming 192.0.2.0/24(rw,no_root_squash,nohide)
Nachdem die Konfiguration erstellt wurde, muss sie noch aktiviert werden. Dies wird durch den folgenden Befehl erreicht:
exportfs -a
Wenn nicht irgendwelche Sicherheitseinstellungen im Weg sind (defaultmäßig sind sie das auch nicht) kann man jetzt aus dem Netz 192.0.2.0/24 auf den Ordner /var/streaming lesend und schreibend zugreifen. Zugriffsrechte natürlich vorausgesetzt.
Apropos Zugriffsrechte: Beim Zugriff auf den Server werden nicht Benutzernamen und Password übertragen sondern die ID-Nummern des am Client angemeldeten Benutzers und dessen Gruppen. Das heißt, selbst wenn es auf Server und Client Benutzer mit gleichem Namen gibt bedeutet das nicht, dass diese auch als gleich angesehen werden. Zentrale Benutzerverwaltung oder wenigstens synchrone Benutzerdatenbanken auf mehreren Systemen sind aber ein anders Thema. Wenn es zwar zu einer Verbindung kommt, aber der lesende oder schreibende der Zugriff trotzdem verweigert wird, sollte man untersuchen wie die Dateirechte gesetzt sind und ob man wirklich der ist der man glaubt zu sein.
Um mit Windows 7 auf NFS zuzugreifen braucht man leider die umfangreichste Version namens Ultimate oder alternative Software. Ehrlich gesagt hab ich aber keine Lust mehr letztere zu suchen, nachdem ich mehrere Artikel zu Windows 7 gelesen habe, in denen keiner darauf hingewiesen hat, dass es für die integrierte Lösung nun mal Ultimate sein muss.
Ähnlich einfach wie unter Debian lässt sich NFS auch unter Ubuntu installieren. Für den Clientbetrieb benötigt man aber nur das Paket nfs-common:
apt-get install nfs-common
Nach der Installation kann man die Freigabe auf dem Client einhängen. Dazu verwendet man passend zur obigen Freigabe auf dem Server mit der IP-Adresse 192.0.2.2 folgenden Befehl:
mount 192.0.2.2:/var/streaming /media/streaming
Wenn der Client aus dem Netzwerk 192.0.2.0/24 stammt, finden sich jetzt die Inhalte des Serververzeichnisses unter /media/streaming. Anderenfalls wird der Zugriff durch den Server verweigert bis wir dort die Datei /etc/exports entsprechend erweitern.
Das Mounten von Hand ist natürlich auf Dauer etwas lästig. Daher kann man in der Datei /etc/fstab einen Eintrag hinterlegen der dafür sorgt das, dass Verzeichnis beim Starten des Computers automatisch gemountet wird:
192.0.2.2:/var/streaming /media/streaming nfs rw,rsize=8192,wsize=8192,hard,intr 0 0
Mit dieser Zeile erreicht man dasselbe wie mit dem Mount-Befehl von vorher – nur immer gleich beim Starten des Systems.
Da ich hier aber von einem Notebook ausgehen und ich damit öfter unterwegs bin, habe ich dieses Vorgehen etwas modifiziert. Mittels einer kleinen Änderung in der etc/fstab verhindere ich das automatische Einhängen des Systems:
192.0.2.2:/var/streaming /media/streaming nfs rw,user,noauto,rsize=8192,wsize=8192,hard,intr 0 0
Wie der geneigte Leser sicherlich schon vermutet verhindert noauto das automatische Mounten. Mittels user wird das Mounten dieser Freigabe auch normalen Benutzern erlaubt. Damit verkürzt sich der Mount-Befehl schon mal um einige Zeichen:
mount /media/streaming
Aber richtig komfortabel wird es durch ein kleines Script das immer dann ausgeführt wird, wenn das Notebook sich mit meinem Heimnetzwerk verbindet. Dies wird möglich, da der Network Manager von Ubuntu jedes Mal, wenn eine Verbindung aufgebaut oder getrennt wird, die Scripte im Ordner /etc/NetworkManager/dispatcher.d/ aufruft und dabei Informationen über die betroffene Verbindung mitgibt.
Um nun die Verbindung zur Netzwerkfreigabe zu steuern muss als erstes eine Datei unter obigem Ordner angelegt werden. Diese muss root gehören und ausführbar sein. Bei der Benennung ist zu berücksichtigen, dass die Scripte in der Reihenfolge ausgeführt werden, die ihrer lexikalischen Ordnung entspricht.
Das Script verwendet zur Identifizierung des richtigen Netzwerks dessen UUID. Diese vom Netzwerkmanager vergebene Identifizierung erhält man indem man, den Inhalt des Ordners /etc/NetworkManager/system-connections/ einsieht. Dort findet man für jede bestehende Verbindung eine Datei. In dieser sind einige Daten zu der jeweiligen Verbindung hinterlegt, unter anderem die UUID. Das Script selbst prüft die UUID jeder neuen Verbindung und wenn es sich dabei um das gewünscht WLAN handelt führt es den mount-Befehl aus. Beim Beenden einer Verbindung hingegen wird geprüft, ob der Mount-Point eingehängt ist und trennt diesen bei Bedarf.
#!/bin/sh -e # Script to Unmount and Mount NFS-Shares connecting special WLANs #
UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" MOUNTPOINT="/media/streaming"
#Parameter 2 enthält das Event das zum Aufruf des Scripts geführt hat. case "$2" in up) #neue Verbindung geöffnet if [ "$CONNECTION_UUID" = "$UUID" ] ; then mount $MOUNTPOINT fi ;;
down) #Verbindung geschlossen if mount | grep "on $MOUNTPOINT type" > /dev/null ; then umount -f $MOUNTPOINT fi ;; esac
Seit dem Update auf Ubuntu 11.10 werden Einträge in der /etc/fstab wie sie hier verwendet werden in dem Dateimanager Nautilus als Geräte angezeigt. Durch einen Klick auf diese “Geräte” werden diese gemountet. Das führt aber zu einem Fehler da das NFS-Verzeichnis ja bereits über das Script ins Dateisystem eingehängt wurde. Um diesem Fehler entgegenzuwirken kann man den Mountpoint für das NFS-Verzeichnis nach /mnt/ verschieben oder eben auf das Script verzichten.
Das NeoTV 550 von Netgear ist eine Set-Top-Box, die Video- und Audioinhalte aus dem LAN auf den Fernseher oder die Stereoanlage überträgt. Die Inhalte können auf verschiedene Arten bereitgestellt werden. Eine davon ist NFS. Problematisch ist hierbei lediglich das Menü. Um hier zurecht zu kommen, brauchte ich einige Zeit. Die Symbole sind teilweise zu klein und einzelne teilweise recht versteckt. Eine NFS-Verbindung richtet man im Menü unter Einstellungen → Medienspeicherort → Medienquellen auswählen → Es werden keine Medien angezeigt → Medienspeicherort manuell hinzufügen ein. Wenn man dort angekommen ist, muss man als Typ NFS wählen, die IP unter Server oder IP sowie den Pfad auf dem Server unter Freigabename angeben. Darüber hinaus kann man mittels Display as einen Namen Vergeben und Anmeldedaten unter Benutzer und Passwort angeben. Wenn man das erst einmal soweit eingerichtet hat, sollten eigentlich die Inhalte unterhalb der Einträge Photo, Musik und Video im Menü auftauchen. Ab hier funktioniert der Betrieb dann reibungslos und zu meiner Zufriedenheit.
]]>