FreeBSD: SSHFS benutzen

Post at — Sep 29, 2016
#alter-beitrag #deutsch

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 mitsshfs 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 inpkg` 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