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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(rimosse (commentate) parti obsolete, rimossa necessità fuse per Jessie e successive)
Riga 11: Riga 11:
Il pacchetto <code>sshfs</code> 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
</pre>
</pre>


Riga 29: Riga 29:
</pre>
</pre>


Inoltre, se si vuole permettere l'accesso anche ad altri utenti (indipendentemente dai permessi associati ai file) aggiungere l'opzione: ''-o allow_other''
=== Permettere l'esecuzione di sshfs ad altri utenti ===
A partire da Debian Jessie non è necessario modificare niente, in quanto di default tutti gli utenti possono utilizzare il modulo fuse se è installato, a prescindere dalla loro appartenenza al gruppo ''fuse''.


=== Permettere l'esecuzione di sshfs ad altri utenti ===
Con Debian Wheezy e precedenti invece, per impostazione predefinita l'utilizzo di sshfs richiede privilegi di root, tuttavia è possibile permettere l'utilizzo di <code>sshfs</code> anche agli utenti normali, se li si aggiunge al gruppo '''fuse'''.
Per impostazione predefinita l'utilizzo di sshfs richiede privilegi di root, tuttavia è possibile permettere l'utilizzo di <code>sshfs</code> anche agli utenti normali.


{{Box|Nota|Non è necessario cambiare i permessi di esecuzione di sshfs per garantire una corretta corrispondenza dei permessi di file/cartelle tra macchina locale e remota. Permettere l'esecuzione di sshfs ad utenti diversi da root SOLO se si ha l'effettiva necessità di permettere ad uno o più utenti normali di caricare risorse remote autonomamente.}}
{{Box|Nota|Non è necessario cambiare i permessi di esecuzione di sshfs per garantire una corretta corrispondenza dei permessi di file/cartelle tra macchina locale e remota. Permettere l'esecuzione di sshfs ad utenti diversi da root SOLO se si ha l'effettiva necessità di permettere ad uno o più utenti normali di caricare risorse remote autonomamente.}}


Seguire i seguenti passaggi:
<!-- OBSOLETO: Passaggi obsoleti (in Wheezy), per ora commentati


<pre>
# chgrp fuse /usr/bin/fusermount
# chgrp fuse /usr/bin/fusermount
# chmod u+s /usr/bin/fusermount
# chmod u+s /usr/bin/fusermount
-->
Per aggiungere un utente (qui chiamato "nomeutente") al gruppo, basta il seguente comando:
<pre>
# 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à <code>sshfs</code> al gruppo ''fuse''.
in questo modo aggiungiamo l'utente che utilizzerà <code>sshfs</code> al gruppo ''fuse'', permettendo di leggere e scrivere <code>/dev/fuse</code> e di eseguire come amministratore <code>fusermount</code>.


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 88: Riga 91:
fa sì che all'utenza usata per connettersi al server remoto sia associata in locale l'utenza avente uid 1001. Se si ha la necessità di fissare la corrispondenza di più utenze/gruppi è possibile creare degli appositi file di mappatura (si veda il manuale di sshfs).
fa sì che all'utenza usata per connettersi al server remoto sia associata in locale l'utenza avente uid 1001. Se si ha la necessità di fissare la corrispondenza di più utenze/gruppi è possibile creare degli appositi file di mappatura (si veda il manuale di sshfs).


== Faq ed Errori Frequenti ==
Inoltre, per permettere l'accesso anche ad altri utenti (indipendentemente dai permessi associati ai file), è stata aggiunta l'opzione: <code>-o allow_other</code>
 
== 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:
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:
Riga 102: Riga 107:
* usare un mountpoint libero (consigliata)
* usare un mountpoint libero (consigliata)
* appendere, dopo il comando <code>''sshfs''</code> l'opzione <code>''-o nonempty''</code>
* appendere, dopo il comando <code>''sshfs''</code> l'opzione <code>''-o nonempty''</code>
<!--
OBSOLETO: possibile parte obsoleta, per ora la commento


=== fusermount: mount failed: Invalid argument ===
=== fusermount: mount failed: Invalid argument ===
Riga 109: Riga 117:
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].
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].


-->
{{Autori
{{Autori
|Autore = [[Utente:MaXeR|MaXeR]]
|Autore = [[Utente:MaXeR|MaXeR]]
Riga 114: Riga 123:
: [[Utente:Wtf|Wtf]] 16:58, 9 ott 2013 (CEST)
: [[Utente:Wtf|Wtf]] 16:58, 9 ott 2013 (CEST)
: [[Utente:mm-barabba|mm.barabba]]  
: [[Utente:mm-barabba|mm.barabba]]  
| Numero_revisori = 2
: [[Utente:HAL 9000|HAL 9000]] 18:31, 20 ago 2014 (CEST)
| Numero_revisori = 3
}}
}}



Versione delle 16:31, 20 ago 2014

File System e dispositivi fisici
Arrow left.png

Generalità

Locali

Remoti

Strumenti

Arrow right.png


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

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

Permettere l'esecuzione di sshfs ad altri utenti

A partire da Debian Jessie non è necessario modificare niente, in quanto di default tutti gli utenti possono utilizzare il modulo fuse se è installato, a prescindere dalla loro appartenenza al gruppo fuse.

Con Debian Wheezy e precedenti invece, per impostazione predefinita l'utilizzo di sshfs richiede privilegi di root, tuttavia è possibile permettere l'utilizzo di sshfs anche agli utenti normali, se li si aggiunge al gruppo fuse.

Info.png Nota
Non è necessario cambiare i permessi di esecuzione di sshfs per garantire una corretta corrispondenza dei permessi di file/cartelle tra macchina locale e remota. Permettere l'esecuzione di sshfs ad utenti diversi da root SOLO se si ha l'effettiva necessità di permettere ad uno o più utenti normali di caricare risorse remote autonomamente.


Per aggiungere un utente (qui chiamato "nomeutente") al gruppo, basta il seguente comando:

# adduser nomeutente fuse

in questo modo aggiungiamo l'utente che utilizzerà sshfs al gruppo fuse, permettendo di leggere e scrivere /dev/fuse e di eseguire come amministratore fusermount.

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

Utilizzo e Test

L'utilizzo è semplice:

sshfs [user@]host:[dir] mountpoint [options]

anche se spesso si può semplicemente usare con :

$ 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

per le opzioni consultare il file

$man sshfs

tra le più comuni :

-p PORT equivalente a '-o port=PORT' 
-C equivalenta a '-o compression=yes' 
-F ssh_configfile specifica un file di configurazione alternativo
-1 equivalente a '-o ssh_protocol=1'

Se il mount avviene con successo è possibile usare il file-manager preferito per poter gestire in lettura e scrittura la nuova directory montata , che sia esso MC, dolphin, PCmanfm o altro.

Utenti e gruppi proprietari

Per impostazione predefinita sshfs adotta un'associazione "diretta" tra UID/GID della macchina remota e quella locale, il che significa per esempio che se il proprietario di un certo file sulla macchina remota è l'utente con UID 1002 anche in locale la proprietà del file sarà attribuita all'utente avente UID 1002. Potrebbero dunque sorgere problemi di permessi se su macchina remota e locale non sussiste un esatta corripondenza utenti/uid e gruppi/gid. Un modo veloce per superare tale problema è specificare lo UID/GID durante il comando per montare le risorse remote, per esempio

# sshfs user@host:/dir/to/mount /mnt/sshdir -o allow_other,idmap=user,uid=1001

fa sì che all'utenza usata per connettersi al server remoto sia associata in locale l'utenza avente uid 1001. Se si ha la necessità di fissare la corrispondenza di più utenze/gruppi è possibile creare degli appositi file di mappatura (si veda il manuale di sshfs).

Inoltre, per permettere l'accesso anche ad altri utenti (indipendentemente dai permessi associati ai file), è stata aggiunta l'opzione: -o allow_other

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




Guida scritta da: MaXeR Swirl-auth80.png Debianized 80%
Estesa da:
Verificata da:
Wtf 16:58, 9 ott 2013 (CEST)
mm.barabba
HAL 9000 18:31, 20 ago 2014 (CEST)

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