SSHFS: montare una risorsa remota sfruttando FUSE ed SSH: differenze tra le versioni
S3v (discussione | contributi) mNessun oggetto della modifica |
S3v (discussione | contributi) 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 ( | 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 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
|
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 | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |