Ich benutze unter Linux oft gvfs-mount
zum Einhängen entfernter SFTP-Verzeichnisbäume. Ich selbst habe dieses unter FreeBSD nicht zum laufen bewegen können. Daher habe ich mich nach Alternativen umgesehen und bin auf sshfs
gestossen, dass im Endeffekt das Gleiche wie gvfs-mount
tut (im Hintergrund ist das Ganze natürlich etwas anders).
Am Anfang gibt es ein paar mögliche Fehler, die ich lange Recherchieren musste. Ich sammle hier einige Fehler und deren Lösungen, die auf meinem nahezu frisch installierten FreeBSD 10.3 aufgetreten sind. Vielleicht erspart das dem ein oder anderen ellenlanges Recherchieren.
Vorweg: Ich habe sshfs
über pkg
als Binärpakete installiert, nicht über den Ports-Tree. In meiner /etc/sysctl.conf
steht zusätzlich noch ein vfs.usermount=1
, damit „normale“ Benutzer auch mounten können.
Folgende Pakete sind installiert:
# pkg info | grep fuse
fusefs-libs-2.9.5 FUSE allows filesystem implementation in userspace
fusefs-sshfs-2.7 Mount remote directories over ssh
sshfs
funktioniert im Grunde ganz einfach. Man hängt den entfernten Baum in einem Verzeichnis (aka Mountpoint) ein, z. B. in (das man zuvor selbst anlegt). Anschliessend kann man mit
sshfs user@server:/path/ das Verzeichnis anhängen. Mit mount
kann man nachgucken, ob der Baum noch eingehängt ist und umount /dev/fuse
kann man den Baum dann auch aushängen.
Es gibt zum Aushängen des Baums (zumindest unter Linux) wohl auch ein fusermount -u , dass ich aber in
pkg` nicht finden konnte.
Fehler: Prozess kann das FUSE-Device nicht finden
Das liegt daran, dass die Device-Datei /dev/fuse
über das Kernelmodul fuse
erzeugt bzw. verwaltet wird. Daher muss man es mit kldload fuse
laden. Mit kldstat
kann man prüfen, ob es auch wirklich geladen wurde.
# kldstat
Id Refs Address Size Name
1 3 0xffffffff80200000 17bc680 kernel
# kldload fuse
# kldstat
1 3 0xffffffff80200000 17bc680 kernel
2 1 0xffffffff81a11000 df9a fuse.ko
Damit man das nicht jedes Mal tun muss, kann man fuse_load="YES"
in die Datei /boot/loader.conf
eintragen. Dann wird das Modul beim Booten automatisch mitgeladen.
Fehler: Prozess kann das FUSE-Device nicht benutzen
Fehlermeldung: unable to open FUSE device: Permission denied
Per Default sind die Berechtigungen auf dem Device /dev/fuse
auf root:operator
. Ist der Benutzer nicht in der Gruppe drin, kann er folglich auch nicht darauf zugreifen.
user@boexli [13:53:31] [
-> % ls -la /dev/fuse*
crw-rw---- 1 root operator 0x55 Sep 22 13:50 /dev/fuse
# pw usermod user -G operator
Nachdem der Benutzer sich einmal wieder neu angemeldet hat, sollte der Fehler nicht mehr auftreten.
Problem: Symlinks sind kaputt
Wenn man einen entfernten Server ohne Optionen einbindet, sind die Symlinks kaputt (File not found
). Das kann man recht leicht beheben, indem man den Parameter -o follow_symlinks
sshfs
mitgibt. Dann funktionieren auch Symlinks. Ursprünglich war die Option mal transform_symlinks
, funktioniert aber schon seit ca. 2011 so nicht mehr.
Der volle Befehl lautet dann `sshfs -o follow_symlinks user@server:/dir/ .
FreeBSD Logo: https://www.freebsd.org/de/logo.html