Home > Linux > NFS: condivisione file

NFS: condivisione file

appunti…

Ho una rete casalinga composta da Laptop e Desktop, entrambi con Ubuntu installato.
Devo condividere files, dal primo verso il secondo.

Comincio con il configurare il lato Server, che nel mio caso è rappresentato dal Laptop.

LATO SERVER

Apro una finestra terminale ed installo il nesessario:

sudo apt-get install nfs-kernel-server

I comandi per controllare il demone nfs-kernel-server sono:

/etc/init.d/nfs-kernel-server start|stop|restart|status

Nota:

sarebbe bene impostare un IP statico lato server, per non dover riconfigurare ogni volta,
il lato client, ad ogni cambio di IP-server.

Per il mio caso, il server avrà IP: 192.168.2.2

Le directories che devono essere condivise, vanno inserite nel file etc/exports.
Aprire suddetto file e se non esiste, crearlo.

sudo gedit /etc/exports

All’interno di questo file, va inserita una riga, per ogni directory che si vuole condividere,
con la seguente sintassi:

/Dir_Da_Condividere IP_client(rw,sync)

/Dir_Da_Condividere (no comment)
Ip_client è l’indirizzo IP del client (il PC che vuole attingere dal Server)
rw sono i diritti in lettura-scrittura assegnati al client, modificabili in ro (sola lettura)
Sync forza la scrittura dei dati appena questi arrivano al server

es.

/mnt/Data/shared 192.168.2.3(rw,sync)

nel caso volessimo estendere l’accesso a tutti i client di rete:

/mnt/Data/shared 192.168.2.0/24(rw,sync)

Una volta configurato il file, esportare le condivisioni con il comando

sudo exportfs -ra

Effettuare il comando dopo ogni modifica.

AVANZATE

Per definire gli accessi al server, in maniera più dettagliata, si possono configurare i file
/etc/host.allow
/etc/host.deny

Per evitare che chiunque possa accedere al server, editare il file /etc/host.deny

sudo gedit /etc/hosts.deny

ed aggiungere

portmap mountd nfsd statd lockd rquotad : ALL

poi editare /etc/host.allow

sudo gedit /etc/hosts.allow

e inserire

portmap mountd nfsd statd lockd rquotad : 192.168.2.2 192.168.2.3 192.168.2.10

NOTA:

inserire in quest’ultimo anche l’IP del server.

In questo modo consentiamo l’accesso al server, solo agli IP: 192.168.2.3 e 192.168.2.10

Anche in questo caso, riavviare i servizi NFS

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

e PORTMAP

sudo /etc/init.d/portmap restart

se al contraio volessi consentire l’accesso al server a tutti gli IP della rete,
ma negarli solo ad alcuni, nel file /etc/hosts.allow metterò:

portmap mountd nfsd statd lockd rquotad : ALL

mentre nel /etc/hosts.deny

portmap mountd nfsd statd lockd rquotad : 192.168.2.5 192.168.2.25

nell’es. gli IP 192.168.2.5 e 192.168.2.25 non potranno accedere al server

Ricordarsi come nel caso precedente di riavviare i servizi NFS e PORTMAP.

LATO CLIENT

Installiamo i pacchetti necessari:

sudo apt-get install portmap nfs-common

Per la sicurezza configuriamo i file hosts.allow e hosts.deny

sudo gedit /etc/hosts.deny

mettiamo quanto segue:

portmap : ALL

poi

sudo gedit /etc/hosts.allow

aggiungendo l’IP del server con la sintassi:

portmap : 192.168.2.2

Ora creiamo una directory per il punto di mount della condivisione

sudo mkdir /media/nfsshared

e montiamo con

sudo mount -t nfs 192.168.2.2:/mnt/Data/shared /media/nfsshared

se è tutto ok, possiamo inserire il montaggio in /etc/fstab:

sudo gedit /etc/fstab

inserisco

192.168.2.2:/mnt/Data/shared /media/nfsshared nfs rw,users,noauto 0 0

dove

192.168.2.2:/mnt/Data/shared è la cartella condivisa, sul server
/media/nfsshared è la directory, dove verrà montata la condivisione
nfs è il tipo di filesystem
rw diritti di lettura e scrittura per il client (modificabile in ro)
users gli users possono montare la condivisione
noauto il montaggio non avviene automaticamente al boot comodo se la risorsa del server non è sempre disponibile.

(per le opzioni disponibili, consultare la manpage di mount)

in funzione di quest’ultima opzione (noauto), basterà digitare

mount /mnt/nfs

per montare la condivisione, senza l’intera sintassi.

NOTA:

con il comando nfsstat si possono verificare le risore condivise sulla rete.

Ogni consiglio e/o suggerimento, è ben accetto….anzi.

Categorie:Linux Tag:
  1. Lele
    dicembre 3, 2009 alle 10:22 am

    Ciao, ottima guida. Ho un problemino però. io ho un server (A) e due client (B) e (C). Quando uno dei due clint ad. es. (B) crea o modifica un file sul server, il file prende come proprietario l’utente del client (B) e come diritti di lettura e scrittura per il proprietario e di sola lettura per il gruppo e gli altri. Questo comporta che solo il client (B) che ha “maneggiato” il file potrà riaprirlo e modificarlo. Come posso fare in modo che ciò non avvenga? ciao e grazie.

  2. dicembre 3, 2009 alle 12:35 pm
  3. Lele
    dicembre 9, 2009 alle 6:36 pm

    grazie mille, ho provato ma mi restituisce questo errore:
    /etc/init.d/nfs-kernel-server restart
    * Exporting directories for NFS kernel daemon… exportfs: /etc/exports:1: unknown keyword “map_static=/etc/nfs/client.map”

    sembra che non riconosca il map_static nel file exports.

    Non esiste il sistema per far salvare i dati con maggiori diritti per gli altri utenti? anche cosi potrei risolvere. Il mio dovrebbe essere un problema molto comune (almeno che non abbia fatto io degli errori) se i pc di un rete vogliono aver accesso ai file creati a vicenda, ma nonostante questo non trovo in rete casistiche del genere.
    grazie mille.

  4. Lele
    dicembre 9, 2009 alle 6:37 pm

    dimenticavo, ho Ubuntu 9.10 con ultimo kernel. Ciao.

  5. dicembre 10, 2009 alle 9:33 am

    posta il tuo
    /etc/exports

    e
    /etc/nfs/client.map

  6. Lele
    dicembre 10, 2009 alle 12:08 pm

    /etc/exports:
    /home/public/prova 192.168.1.0/24(rw,sync,map_static=/etc/nfs/client.map)

    /etc/nfs/client.map:
    uid 1004 1000

    gid 1004 1000

    in man exports tra le opzioni di mapping sembra non ci sia piu il map_static. Esistono invece il “anonuid” e “anongid”, ho provato ad inserirli in export ma senza successo, nel senso che i file salvati dai vari pc in rete non prendevano uid e gid reali ma quelli corrispondenti sul server.
    Ciao e grazie.

  7. dicembre 10, 2009 alle 1:00 pm

    >> in man exports tra le opzioni di mapping sembra non ci sia piu il map_static.

    questo non lo sapevo….

    Ok utilizzando anonuid e anonid, come hai impostato il file /etc/exports correttamente?
    hai inserito anonid=xxx, anongid=yyy relativi ai 2 pc della rete?

  8. Lele
    dicembre 11, 2009 alle 10:59 am

    Si, avevo provato ad inserire anonuid e anongid come hai scritto tu, e siccome i client sono due ed hanno uid e gid non corrispondenti, ho anche provato a fare due righe nel file exports ma senza nessun risultato… poi ho risolto grazie ad un consiglio di un amico.. riporto la soluzione nel commento sotto.

  9. Lele
    dicembre 11, 2009 alle 11:32 am

    allora, ho risolto cosi’: premesso quindi che quando su linux si crea un file (su qualunque file system) il sistema gli assegna uid e gid dell’utente che si stà usando (anche se si stà operando in rete), se i pc che condividono lo stesso share hanno uid e gid diversi allora il sistema li riconosce come utenti diversi.
    Cosi’ io ho configurato un gruppo (primario), su tutti i sistemi, al quale appartengano tutti gli utenti che uso nell’ufficio. Dopo ho fatto in modo che i nuovi file creati abbiano tutti i permessi per il gruppo. Per fare questo dobbiamo cambiare il parametro “umask” nel file /etc/profile, portandolo da “umask=022” a “umask=002.
    Dopo il riavvio di tutti i pc (non conosco il demone da far ripartire) il problema è risolto. Spero sia utile a qualcuno. Saluti.

  10. Lele
    dicembre 11, 2009 alle 11:36 am

    Mi sono dimenticato una cosa molto importante: la soluzione sopra non è frutto del mio sapere. Mi è stata suggerita da un ragazzo del PLUG di Prato (Prato Linux User Group) http://www.prato.linux.it/
    che ringrazio nuovamente, come ringrazio ancora Bancaldo che mi ospita per la disponibilità ed i preziosi consigli. Saluti.

  11. dicembre 11, 2009 alle 2:47 pm

    ottimo.
    Ti ringrazio per la dritta.
    ciao.

  12. Lele
    maggio 16, 2012 alle 11:07 am

    Ciao, sono passato ad ubuntu 12.04 LTS dove mi pare non esiste piu il pacchetto portmap, sai se esistono alternative? Grazie.

  13. maggio 16, 2012 alle 11:39 am

    comunque non sono ancora passato alla 12.04.
    Come consigliato aspetterò Luglio (quando peraltro l’avanzo di distribuzione LTS verrà segnalato negli aggiornamenti).

    EDIT:
    così da una prima googlata, sembrano esserci un po’ di problemi con Precise ed NFS…e considerati i casini con i driver NVIDIA, penso aspetterò ancora un po’.

  14. Lele
    maggio 17, 2012 alle 3:48 pm

    Per i driver NVIDIA io ho seguito con successo questa guida (applicato il sistema del repository) : http://www.antonioallegretti.it/?q=it/node/661
    Ho gia fatto 4 installazioni su diversi pc e non ho avuto nessun problema, la trovo migliore delle versioni precedenti che per i primi mesi presentavano problematiche varie.

    Vedo che il portmap su ubuntu 12.04 è un “Virtual package provided by: rpcbind”. Nel repository “portmap” non esiste; è invece già installato il “rpcbind”. Pensi che inserendo portmap nell’ host.allow e nel host.deny così come da tua guida possa funzionare? sai mica come possa eventualmente verificarne il funzionamento? Ciao e grazie.

  15. maggio 17, 2012 alle 4:09 pm

    non ho ancora la 12.04, cmq googlando ho scoperto che portmap è deprecato.
    Devi usare proprio rcpbind!
    Dài un’occhiata qui:
    http://web.archiveorange.com/archive/v/3qQsTTLHhrqT0Qofo5gp
    ciao

  16. Lele
    giugno 5, 2012 alle 9:51 am

    Confermo che su ubuntu 12.04LTS, con rpcbind al posto di portmap tutto funziona bene. Dopo le modifiche va comunque riavviato il servizio col comando “sudo service portmap restart” … non funziona il “sudo service rpcbind restart”. Non è per me una priorità perche il sistema illustrato da bancaldo è tutt’ora efficace ed efficiente, ma se ne avrò il tempo mi piacerebbe capire le differenze tra nfsv4 e nfsv3. Ciao.

  17. giugno 5, 2012 alle 10:16 am

    Grazie per la conferma.
    Io sono ancora pigramente su Lucid.
    Ciao

  1. No trackbacks yet.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: