Condivisione file con NFS

Se dovete condividere file all’interno di una rete mista (Linux e/o Windows e/o Mac) dovete installare e configurare Samba.

Se invece dovete condividere file all’interno di una rete unificata Linux (solo pc con Linux), o se siete in rete mista ma la condivisione dovrà servire solo i pc Linux, vi converrà usare NFS in quanto più sicuro, performante e leggero.

Lato server

Installiamo i servizi NFS:

sudo apt-get install portmap nfs-kernel-server

Per indicare al server quali saranno le cartelle che dovranno essere condivise modifichiamo il file /etc/exports:

sudo nano /etc/exports

Per ogni cartella da condividere aggiungiamo una riga, seguendo la seguente sintassi:

/cartella_da_condividere indirizzo_ip_del_client(rw,sync)

Se volete condividere la cartella dell’esempio precedente, ma in sola lettura:

/cartella_da_condividere indirizzo_ip_del_client(ro,sync)

Adesso possiamo rendere il sistema più sicuro specificando quali client possono accedere al pc e quali invece no.

Specifichiamo i client, e relativi servizi lato server, a cui vogliamo dare l’accesso modificando il file /etc/hosts.allow:

nano /etc/hosts.allow

ed aggiungiamo la seguente riga (per specificare più indirizzi ip separarli con la virgola):

portmap mountd nfsd statd lockd rquotad : indirizzi_ip_dei_client_ammessi

Specifichiamo i client, e relativi servizi lato server, a cui vogliamo negare l’accesso modificando il file /etc/hosts.deny:

nano /etc/hosts.deny

ed aggiungiamo la seguente riga

portmap mountd nfsd statd lockd rquotad : ALL

con questa riga neghiamo a tutti l’accesso alle risorse condivise via NFS tranne che ai client specificati nel file /etc/hosts.allow

Se invece vogliamo negare l’accesso ad un preciso client, al posto di ALL, basta specificarne l’indirizzo ip.

Se invece vogliamo negare l’accesso a tutti i client tranne ad uno in particolare, la nostra riga in /etc/hosts.deny dovrà essere:

portmap mountd nfsd statd lockd rquotad : ALL EXCEPT indirizzi_ip_dei_client_ammessi

Nei file hosts.allow e hosts.deny potete specificare i client tramite indirizzo ip o tramite host e/o nome del dominio (nel caso abbiate un vostro server DNS).

Nel caso utilizziate gli host ricordate che eventuali aggressori potranno utilizzare vari exploit per aggirare la risoluzione del nome.

Inoltre, ad ogni interruzione del servizio DNS, le condivisioni non risulterebbero più disponibili nemmeno per i client ammessi.

Pertanto, dove possibile, è sempre più sicuro e funzionale specificare i client tramite indirizzo ip.

A questo punto, per rendere effettive le modifiche, dobbiamo riavviare i demoni:

sudo /etc/init.d/portmap restart

sudo /etc/init.d/nfs-kernel-server restart

Lato client

Installiamo, nel caso non fossero già presenti, i pacchetti necessari:

sudo apt-get install portmap nfs-common

Il client è pronto per montare la condivisione, ma possiamo rendere anch’esso più sicuro specificando delle politiche di accesso come precedentemente fatto per il server.

Modifichiamo il file /etc/hosts.deny:

sudo nano /etc/hosts.deny

ed inseriamo la seguente riga:

portmap : ALL

Adesso modifichiamo il file /etc/hosts.allow:

sudo nano /etc/hosts.allow

ed inseriamo la seguente riga:

portmap : indirizzo_ip_del_server

Adesso possiamo montare le condivisione.

Creiamo la cartella che sarà il nostro punto di mount:

mkdir /mnt/punto_di_mount

adesso montiamo la condivisione con il comando:

sudo mount -t nfs indirizzo_ip_del_server :/ percorso_completo_cartella_condivisa /media/punto_di_mount

Nell’ambiente grafico Gnome, troveremo la risorsa condivisa appena montata nel menù Risorse e la voce corrisponderà al nome assegnato alla directory scelta come punto_di_mount. Questo se la directory scelta come punto_di_mount sarà all’interno della directory /media.

In ogni caso potrete accedere sia da shell che dall’ambiente grafico navigando nella directory corrispondente al punto di mount scelto.

Volendo, possiamo montare la condivisione direttamente nel file /etc/fstab per averla disponibile automaticamente all’avvio.

Per fare ciò modifichiamo il file /etc/fstab:

sudo nano /etc/fstab

ed aggiungiamo la riga:

indirizzo_ip_del_server:percorso_completo_cartella_condivisa /mnt/punto_di_mount nfs rw,hard,intr 0 0

Altre opzioni (colore blu) per il mount in /etc/fstab possono essere:

defaults Usa le impostazioni di default, ovvero rw,suid,dev,exec,auto,nouser e async

ro Monta la condivisione in sola lettura (da usare al posto di rw)

noauto Evita di montare automaticamente il filesystem all’avvio. Utile se la condivisione non è sempre disponibile

user Permette di montare la condivisione anche da utente normale

exec Permette di mantenere i privilegi per i file eseguibili

suid Permette di mantenere il suid

dev Dispositivi a blocchi

7 Risposte a “Condivisione file con NFS”

  1. giancarlo Dice:

    posto qui perchè sul sito di supporto per ubuntu in italiano non trovo aiuto,

    non riesco a montare una condivisione NFS all’ avvio in automatico anche se ho aggiunto quella riga al file fstab, quale potrebbe essere il problema ?

  2. Anny Dice:

    Ciao con due comandi spiegati qui: http://www.pluto.it/files/ildp/HOWTO/NFS-HOWTO/NFS-HOWTO-4.html
    e nella pag precedente, mi è partito subito tutto.
    Forse il rsize/wsize? Non so prova.
    Ciao.

  3. Anny Dice:

    Ho trovato:
    nel lato server in /etc/hosts.allow
    si deve mettere la riga
    ALL: ip_client
    Ciao.

  4. ugaciaka Dice:

    cmq NFS funziona con tutti i SO unix-like: opensolaris, freebsd, mac…

  5. guidaubuntu Dice:

    Cercando di montare una condivisione nfs su un client Mandriva 2008.1 Spring viene restituito l’errore:
    mount.nfs: rpc.statd is not running but is required for remote locking.
    Either use ‘-o nolocks’ to keep locks local, or start statd.

    Questo perchè oltre a quanto specificato nell’articolo dobbiamo installare il pacchetto nfs-utils-clients:
    urpmi nfs-utils-clients

    ed avviare i servizi portmap e nfs-common con i comandi:
    /etc/init.d/portmap start
    /etc/init.d/nfs-common start

    Adesso sarà possibile montare la condivisione.

  6. gianluca.ts Dice:

    Salve. Complimenti per le guide, ho scoperto il blog e me le sto leggendo tutte. Direi che hai il dono della chiarezza! Volevo saper se possono coesistere i protocolli smb e nfs. Ovvero: avendo una rete mista posso accedere alle stesse risorse tramite smb dai client microsoft e tramite nfs da quelli unix-like?
    Grazie

  7. guidaubuntu Dice:

    Grazie per i complimenti! :D

    Certo. Puoi usare entrambi i protocolli contemporaneamente.

Lascia una Risposta