Home   Artikel   Archiv   Forum   Impressum  
Artikel vom 3.10.04
Autor: Ronny Ziegler
Languages: en
Artikel bewerten:

Printer Druckversion
Helfen Sie mit!
 

SHFS: Das SSH Dateisystem

SHFS

SHFS ermöglicht es das Dateisystem eines jeden Rechners zu mounten, auf dem man einen SSH-Zugang besitzt. Die Datenübertragung erfolgt dabei vollständig verschlüsselt und benötigt keinerlei zusätzliche Konfiguration auf dem entfernten Rechner.


Netzwerkdateisysteme

Um über das Netzwerk Dateisysteme zu mounten, nutzt man entweder NFS (siehe auch: LNM - Netzgeflüster unter GNU/Linux SuSE mit KDE 3.x) mit seinen bekannten Sicherheitsschwächen, welche nur mit größerem Aufwand durch ein SSH-tunneln des Protokolls gelöst werden können, oder man nimmt AFS, welches aber in der Administration sehr aufwändig ist und sich erst in größeren Firmennetzwerken lohnt.

Beide Lösungen benötigen aber auf der Gegenseite einen NFS- bzw. AFS-Server und sind somit nur dann einsetzbar, solange dieser Dienst aktiviert wurde und ein Zugriff mittels des jeweiligen Dienstes vom eigenen Rechner aus erlaubt ist.

SHFS

SHFS geht einen ganz anderen Weg. Ein Kernel-Modul (shfs.o), welches auf dem Client-Rechner installiert werden muß, simuliert dem Benutzer ein Dateisystem. Jeder Zugriff auf das mit SHFS gemountete Verzeichnis wird mittels SSH an den entfernten Rechner übertragen und dort ausgeführt.
Dies alles geschieht für den Benutzer völlig transparent, d.h. er bemerkt nichts von der Kommunikation zwischen beiden Rechnern und kann arbeiten, wie in einem lokalen Verzeichnis.

Das Kernelmodul ist nur auf Client-Seite nötig und funktioniert zusammen mit Kernel 2.4.10+ und 2.6.x. Für die Gegenseite genügt ein übliches Unix-System, welches SSH-Zugriff erlaubt.

Installation

Von der Hompage des Projektes shfs.sourceforge.net kann man die aktuelle Version der Software herunterladen (momentan 0.35): http://sourceforge.net/project/showfiles.php?group_id=72997&package_id=93905

Die Installation beschränkt sich auf Entpacken,

  >> tar zxvf shfs-0.35.tar.gz -C /tmp/
  >> cd /tmp/shfs-0.35 
  
Kompilieren und Installieren (als root):
  >> make
  >> su (Passwort)
  >> make install
  

SHFS im Einsatz

Ist die Installation von SHFS fehlerfrei verlaufen, kann man sofort beginnen das System einzusetzen. Als erstes sollte man die Mount-Punkte erstellen, in die später die fremden Dateisysteme eingehängt werden. Standardmäßig gehört sowas immer nach /mnt.

  >> mkdir /mnt/rechner1
  
Als nächstes wird das Kernelmodul geladen:
  >> /sbin/insmod shfs
  Using /lib/modules/2.4.22-1.2174.nptl/kernel/fs/shfs/shfs.o
  
Nun kann das fremde Dateisystem eingehängt werden. Der Befehl hierfür lautet
  >> shfsmount user@rechner1 /mnt/rechner1
  
Wobei user der Username auf dem entfernten Rechner ist.
Wenn man keinen SSH-Key-Agent benutzt, wird man nun nach dem SSH-Passwort gefragt. Das wars dann aber auch schon. Ab sofort steht das entfernte Dateisystem jedem Programm zur Verfügung:
  >> ls -l /mnt/rechner1
  insgesamt 669
  -rw-------   1 root root  14296 21. Apr 11:14 #160404#
  -rw-r--r--   1 root root  11372 12. Jul 14:46 all.ps
  -rw-r--r--   1 root root  10017 15. Mär 2004  altarelli.eps
  -rw-r--r--   1 root root   9962 25. Aug 17:33 arm.for
  drwxr-xr-x   2 root root   2048  6. Apr 14:00 att
  -rw-r--r--   1 root root    306 12. Mär 2004  basic.root
  [...]
  
Wie man erkennt, wurde mit dem benutzten shfsmount-Befehl nur das Home-Verzeichnis des entfernten Rechners gemountet; und die Dateien gehören alle dem Benutzer root.

Das Mounten anderer Verzeichnisse erreicht man, indem ganz analog wie beim scp-Befehl das gewünschte Verzeichnis mit angegibt, z.B.:

  >> shfsmount user@rechner1:/usr/local /mnt/rechner1
  
Um die Dateirechte einzustellen, existieren die Optionen rmode, uid und gid:
  >> shfsmount user@rechner1 /mnt/rechner1 -o preserve,rmode=755
  
übernimmt die auf dem entfernten Rechner eingestellte User-ID und Group-ID der jeweiligen Datei, falls die selben Benutzer auch lokal existieren sollten.
Mit dieser Option agiert shfs ganz analog zu NFS.
Sollten Benutzer- und Gruppen-ID auf dem entfernten Rechner anders als lokal lauten, so kann man die Werte auch explizit angeben:
  >> shfsmount user@rechner1 /mnt/rechner1 -o userid=meinname,gid=users
  
Die Dateirechte werden dann lokal entsprechend gesetzt:
  >> ls -l /mnt/rechner1
  insgesamt 669
  -rw-------   1 meinname users  14296 21. Apr 11:14 #160404#
  -rw-r--r--   1 meinname users  11372 12. Jul 14:46 all.ps
  -rw-r--r--   1 meinname users  10017 15. Mär 2004  altarelli.eps
  [...]
  

Um das Verzeichnis wieder auszuhängen, kann entweder der Befehl shfsumount benutzt werden, oder (wie sonst auch) der umount-Befehl:

  >> umount /mnt/rechner1
  

weitere Möglichkeiten

Andere wichtige Optionen sind --port=PORT, falls die Gegenseite für SSH einen von 22 abweichenden Port benutzt und --persistent um unterbrochene Verbindungen automatisch wieder aufbauen zu lassen.

Es ist sogar möglich, shfs mit dem üblichen Mount-Befehl zu benutzen, d.h. auch der Aufruf:

  >> mount -t shfs user@host /mnt
  
wird verstanden. Somit kann man SHFS auch zusammen mit Automountern benutzen, oder die Verbindung durch einen entsprechenden Eintrag in der /etc/fstab aufbauen.

Links

Homepage: http://shfs.sourceforge.net/
Download-Seite
Sourceforge-Projektseite: http://sourceforge.net/projects/shfs/




Anmerkungen zu diesem Artikel


Bisher keine Kommentare


Eigene Anmerkung eintragen