giugno 10th, 2010

Filesystem in userspace – montare una directory tramite ssh: FUSE + sshfs

How-to, by Luca Panella.

La presenza di un server ssh permette di fare uso di un filesystem di rete basato su questo protocollo criptato.
Vi sono tre modi diversi per ottenere ciò:
FUSE (Filesystem in USErspace), un framework per i filesystem in user space fatto da Miklos Szeredi, un cervellone ungherese (in senso buono eh!). Questo framework supporta un gran numero di filesystem ed è fatto molto bene, a detta di tutti. E’ stato di recente incluso nel kernel.
LUFS è un’alternativa a FUSE, meno performante e non attivamente sviluppato.
shfs è un modulo che permette di fare la stessa cosa, ma al momento funziona così-così (almeno per me) e non permette accessi simultanei.

Senza nulla togliere agli autori degli altri progetti, FUSE è la scelta migliore soprattutto come performace e stabilità. L’autore ha anche scritto un filesystem su ssh per questo framework: sshfs, che viene utilizzato in questa miniguida.

Se avete un kernel 2.6.14, controllate che sia incluso, altrimenti ricompilate.
La voce della config è:
CONFIG_FUSE_FS=y

oppure m per “modulo”. In tal caso ricordate di attivare il supporto per caricamento e scaricamento dei moduli.
Dalla parte del server sshd non vi è niente da configurare, inoltre sshfs funzione sia con il protocollo 1 che 2.
Gli utility per montare i fs sono nel pacchetto fuse-utils:
$ apt-get update
$ apt-get install fuse-utils

Caricate il modulo fuse
$ modprobe fuse

(se compilato come modulo)

Facendo
$ dmesg | tail

dovreste vedere un messaggio di init.
Se volete permettere ad utenti nel vostro sistema di usare sshfs, aggiungeteli al gruppo fuse:
$ adduser utente fuse

Create il mountpoint:
$ mkdir /mnt/share

Sui permessi da dare al mountpoint vi possono essere differenti interpretazioni: io gli ho dato come permessi drwxrwxr– root fuse, lo monto anche da utente semplice e tutti gli utenti appartenenti al gruppo possono accedere ai file. Notate che sshfs sembra non mantenere correttamente i permessi dei file remoti, questa funzionalità sarà aggiunta nelle prossime versioni.
Se avete un sistema con diversi utenti aggiunti al gruppo fuse e volete essere voi soli ad accedere ai file montati, create il mount point nella vostra home e dategli come permessi drwxrwxr– user user
Per montare la sintassi è:
$ sshfs user@host:[remote dir] [mountpoint] [opzioni]

Aggiungendo l’opzione -o reconnect si ha il ripristino della connessione.
Per smontare
$ fusermount -u [mountpoint]

Problemi/domande frequenti:
- Non esiste /dev/fuse
Se non viene creato automaticamente è possibile farlo a mano:
$ mknod /dev/fuse -m 0666 c 10 229

- Come lo si aggiunge a fstab?
Così:
sshfs#[user][host]:[/remote/dir] [mountpoint] fuse defaults 0 0

Back Top

Responses to “Filesystem in userspace – montare una directory tramite ssh: FUSE + sshfs”

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Back Top


Debianclan pixeled by Open Source Blog