SSHFS: montare una risorsa remota sfruttando FUSE ed SSH: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 9: Riga 9:


== Installazione ==
== Installazione ==
Il pacchetto sshfs e le utility per gestire FUSE sono già presenti in Debian, quindi l'installazione si riduce ad un semplice:
Il pacchetto <code>sshfs</code> e le utility per gestire FUSE sono già presenti in Debian, quindi l'installazione si riduce ad un semplice:
<pre>
<pre>
# apt-get install sshfs fuse-utils
# apt-get install sshfs fuse-utils
Riga 29: Riga 29:
</pre>
</pre>


Inoltre, se si vuole permettere l'accesso anche ad altri utenti (indipendentamente dai permessi associati ai file) aggiungere l'opzione: ''-o allow_other''
Inoltre, se si vuole permettere l'accesso anche ad altri utenti (indipendentemente dai permessi associati ai file) aggiungere l'opzione: ''-o allow_other''


=== Permessi utenti ===
=== Permessi utenti ===
È possibile permettere l'utilizzo di sshfs anche agli utenti normali, seguendo i seguenti passaggi:
È possibile permettere l'utilizzo di <code>sshfs</code> anche agli utenti normali, seguendo i seguenti passaggi:
<pre>
<pre>
# chgrp fuse /usr/bin/fusermount
# chgrp fuse /usr/bin/fusermount
Riga 38: Riga 38:
# adduser nomeutente fuse
# adduser nomeutente fuse
</pre>
</pre>
in questo modo permettiamo l'utilizzo del comando ''fusermount'' agli utenti appartenenti al gruppo ''fuse'', e aggiungiamo l'utente che utilizzerà sshfs al gruppo fuse.
in questo modo permettiamo l'utilizzo del comando ''fusermount'' agli utenti appartenenti al gruppo ''fuse'', e aggiungiamo l'utente che utilizzerà <code>sshfs</code> al gruppo ''fuse''.


Per rendere effettiva l'aggiunta al gruppo è necessario effettuare un logout-login.
Per rendere effettiva l'aggiunta al gruppo è necessario effettuare un logout-login.
Riga 48: Riga 48:
</pre>
</pre>
dove
dove
; <code>user</code>: è l'utente della macchina remota, se omesso verrà utilizzato l'username dell'utente che lancia il comando (root, in questo caso);
; <code>user</code>: è l'utente della macchina remota, se omesso verrà utilizzato l'username dell'utente che lancia il comando ([[root]], in questo caso);
; <code>host</code>: è l'indirizzo IP o l'URL a cui la macchina remota risponde;
; <code>host</code>: è l'indirizzo IP o l'URL a cui la macchina remota risponde;
; <code>/dir/to/mount</code>: è il percorso assoluto della directory da montare, (è possibile anche utilizzare un percorso relativo a partire dalla directory home dell'utente: <code>''./path/to/dir''</code>);
; <code>/dir/to/mount</code>: è il percorso assoluto della directory da montare, (è possibile anche utilizzare un percorso relativo a partire dalla directory home dell'utente: <code>''./path/to/dir''</code>);
; <code>/mnt/sshdir</code>: rappresenta il punto di mount;
; <code>/mnt/sshdir</code>: rappresenta il punto di mount;


per controllare la riuscita del comando, si può analizzare l'output del comando: <pre>
per controllare la riuscita del comando, si può analizzare l'output del comando:
<pre>
$ mount
$ mount
</pre>
</pre>


Per quanto riguarda lo smontaggio (umounting) il comando è il seguente:
Per quanto riguarda lo smontaggio (umounting) il comando è il seguente:
Riga 65: Riga 65:
== Faq ed Errori Frequenti ==
== Faq ed Errori Frequenti ==
=== failed to open <code>/dev/fuse</code>: No such file or directory ===
=== failed to open <code>/dev/fuse</code>: No such file or directory ===
L'errore è dovuto alla mancanza del modulo del kernel relativo a ''fusefs''. È necessario compilarlo come modulo o staticamente (nei kernel pacchettizzati Debian è presente, ed è caricabile con un <pre>
L'errore è dovuto alla mancanza del modulo del kernel relativo a ''fusefs''. È necessario compilarlo come modulo o staticamente (nei kernel pacchettizzati Debian è presente, ed è caricabile con un:
<pre>
# modprobe fuse
# modprobe fuse
</pre>
</pre>
Riga 78: Riga 79:


=== fusermount: mount failed: Invalid argument ===
=== fusermount: mount failed: Invalid argument ===
È possibile che la versione dei pacchetti fuse-utils, libfuse2, sshfs-fuse non sia sufficientemente aggiornata rispetto alla versione del kernel in uso.
È possibile che la versione dei pacchetti <code>fuse-utils, libfuse2, sshfs-fuse</code> non sia sufficientemente aggiornata rispetto alla versione del kernel in uso.<br/>
Si legga in particolare la discussione apparsa su [http://forum.debianizzati.org/viewtopic.php?f=19&t=21639 questa pagina] nel forum.
Si legga in particolare la discussione apparsa su [http://forum.debianizzati.org/viewtopic.php?f=19&t=21639 questa pagina] nel forum.


La soluzione prospettata è quella  di sostituire e aggiornare i pacchetti a tutt'oggi disponibili (per la sarge: fuse-utils 2.2.1-4, libfuse2 2.2.1-4, sshfs 1.1-1 ) con le versioni a disposizione su [http://www.backports.org/ http://www.backports.org/] (fuse-utils 2.5.3-1bpo1, libfuse2 2.5.3-1bpo1, sshfs_1.6-0bpo1) seguendo le relative [http://www.backports.org/dokuwiki/doku.php?id=instructions istruzioni].
La soluzione prospettata è quella  di sostituire e aggiornare i pacchetti a tutt'oggi disponibili (per Sarge: <code>fuse-utils 2.2.1-4, libfuse2 2.2.1-4, sshfs 1.1-1</code> ) con le versioni a disposizione su [http://www.backports.org/ http://www.backports.org/] (<code>fuse-utils 2.5.3-1bpo1, libfuse2 2.5.3-1bpo1, sshfs_1.6-0bpo1</code>) seguendo le relative [http://www.backports.org/dokuwiki/doku.php?id=instructions istruzioni].


{{
{{

Versione delle 02:00, 13 dic 2012

File System e dispositivi fisici

Generalità

Locali

Remoti

Strumenti


Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Spesso può essere necessario lavorare direttamente su un filesystem remoto (si pensi, ad esempio, alla webroot di un sito o alla home del proprio portatile).

Sshfs permette di superare questo problema in un modo semplice e pulito: montando una directory mediante FUSE, usando il protocollo SSH.

Installazione

Il pacchetto sshfs e le utility per gestire FUSE sono già presenti in Debian, quindi l'installazione si riduce ad un semplice:

# apt-get install sshfs fuse-utils

Per quanto riguarda il kernel, normalmente è presente il modulo fuse. Se non è presente è necessaria la ricompilazione del kernel.

Il modulo da attivare si trova in: File systems ---> Filesystem in Userspace support.

Configurazione

Creazione del punto di mount

Prima di tutto è necessario creare un punto di montaggio in cui montare la risorsa di rete (ovviamente ognuno è liberissimo di utilizzare la directory che vuole):

# mkdir /mnt/sshdir

è necessario, inoltre, impostare l'utente che utilizzerà questa directory come owner:

# chown username /mnt/sshdir

Inoltre, se si vuole permettere l'accesso anche ad altri utenti (indipendentemente dai permessi associati ai file) aggiungere l'opzione: -o allow_other

Permessi utenti

È possibile permettere l'utilizzo di sshfs anche agli utenti normali, seguendo i seguenti passaggi:

# chgrp fuse /usr/bin/fusermount
# chmod u+s /usr/bin/fusermount
# adduser nomeutente fuse

in questo modo permettiamo l'utilizzo del comando fusermount agli utenti appartenenti al gruppo fuse, e aggiungiamo l'utente che utilizzerà sshfs al gruppo fuse.

Per rendere effettiva l'aggiunta al gruppo è necessario effettuare un logout-login.

Utilizzo e Test

L'utilizzo è semplice:

$ sshfs user@host:/dir/to/mount /mnt/sshdir

dove

user
è l'utente della macchina remota, se omesso verrà utilizzato l'username dell'utente che lancia il comando (root, in questo caso);
host
è l'indirizzo IP o l'URL a cui la macchina remota risponde;
/dir/to/mount
è il percorso assoluto della directory da montare, (è possibile anche utilizzare un percorso relativo a partire dalla directory home dell'utente: ./path/to/dir);
/mnt/sshdir
rappresenta il punto di mount;

per controllare la riuscita del comando, si può analizzare l'output del comando:

$ mount

Per quanto riguarda lo smontaggio (umounting) il comando è il seguente:

$ fusermount -u /mnt/sshdir

Faq ed Errori Frequenti

failed to open /dev/fuse: No such file or directory

L'errore è dovuto alla mancanza del modulo del kernel relativo a fusefs. È necessario compilarlo come modulo o staticamente (nei kernel pacchettizzati Debian è presente, ed è caricabile con un:

# modprobe fuse

mountpoint is not empty

Se si cerca di montare una risorsa in un mountpoint contenente già dei file, può apparire il seguente errore:

fusermount: mountpoint is not empty
fusermount: if you are sure this is safe, use the 'nonempty' mount option

Le soluzioni sono:

  • usare un mountpoint libero (consigliata)
  • appendere, dopo il comando sshfs l'opzione -o nonempty

fusermount: mount failed: Invalid argument

È possibile che la versione dei pacchetti fuse-utils, libfuse2, sshfs-fuse non sia sufficientemente aggiornata rispetto alla versione del kernel in uso.
Si legga in particolare la discussione apparsa su questa pagina nel forum.

La soluzione prospettata è quella di sostituire e aggiornare i pacchetti a tutt'oggi disponibili (per Sarge: fuse-utils 2.2.1-4, libfuse2 2.2.1-4, sshfs 1.1-1 ) con le versioni a disposizione su http://www.backports.org/ (fuse-utils 2.5.3-1bpo1, libfuse2 2.5.3-1bpo1, sshfs_1.6-0bpo1) seguendo le relative istruzioni.




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized