Pagine

venerdì 4 settembre 2009

NFS per condividere file tra macchine Linux

Premessa

Dopo aver installato Debian sul mio NSLU2, ho sentito l'esigenza di condividere una o più partizioni tra il mio PC con Ubuntu e l'NSLU2.
A questo scopo è possibile utilizzare il servizio NFS dato che la condivisione opera tra due macchine linux.

NB: Nel seguente esempio il mio server è l'NSLU2 all'indirizzo 192.168.1.100 mentre il mio desktop può avere un indirizzo tra 192.168.1.2 e 192.168.1.5 mentre il rounter ha indirizzo 192.168.1.1. Nella vostra rete gli esempi sono da adattare di conseguenza.



Lato Server (NSLU2)

Ebbene si, l'NSLU2 viene pensato come il server della situazione...
Si acceda come root da shell e prima di tutto si installino i servizi necessari:

apt-get install portmap nfs-kernel-server

Successivamente è necessario comunicare al NSLU2 quali sono le directory da far visualizzare all'esterno. Per questo si editi il file /etc/exports aggiungendo una o più righe a seconda di quante sono le directory da condividere. Si segua questa sintassi:

/home/nathanvi 192.168.1.2(rw,sync) 192.168.1.3(rw,sync) 192.168.1.4(rw,sync) 192.168.1.5(rw,sync)


dove /home/nathanvi è la directory da condividere, 192.168.1.2 è l'indirizzo IP con il quale condividere e quelle tra parentesi sono le opzioni molto ben documentate anche nel file stesso.
Ora è meglio dare uno sguardo al lato sicurezza ed in particolare andiamo a dire quali client possono e quali non possono accedere al NSLU2 su determinati servizi.
Per far questo editiamo il file /etc/hosts.allow e aggiungiamo la seguente riga al fondo:

portmap mountd nfsd statd lockd rquotad: 192.168.1.2, 192.168.1.3, 192.168.1.4, 192.168.1.5


e modifichiamo /etc/hosts.deny

portmap mountd nfsd statd lockd rquotad: ALL


per inibire l'accesso a tutti gli altri. Al posto di ALL si può mettere anche un singolo indirizzo IP.
Per rendere le modifiche operative, da shell diamo i seguenti comandi:

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


Lato Client (il PC Desktop con Linux)

A questo punto ci possiamo concentrare sul nostro desktop.
Installiamo i servizi come abbiamo fatto sul server. Anche qui operiamo come root da shell:

apt-get install portmap nfs-common


E, sempre come abbiamo fatto sul server, spendiamo due parole sulla sicurezza.
Modifichiamo il file /etc/hosts.allow

portmap: 192.168.1.100


e il file /etc/hosts.deny

portmap: ALL


Creiamo una directory dove montare la nostra partizione remota:

mkdir /home/nathanvi_su_NSLU2


e montiamo la directory:

mount -t nfs 192.168.1.100:/home/nathanvi /home/nathanvi_su_NSLU2


A questo punto se visualizzate il contenuto della directory appena creata, dovrebbe contenere ciò che c'è in /home/nathanvi sul NSL2...
Se si vuole che ad ogni riavvio, la directory sia montata in automatico possiamo modificare il file /etc/fstab aggiungendo la riga:

192.168.1.100:/home/nathanvi /home/nathanvi_NSLU2 nfs rw,hard,intr,noauto,exec,suid 0 0

Le varie opzioni si riferiscono a comportamenti differenti. In particolare:
  • 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

Con questo è tutto.
Prima di terminare ecco l'output sul mio desktop del comando df -h; si noti l'ultima riga....:

# df -h
File system Dimens. Usati Disp. Uso% Montato su
/dev/sda2 24G 5,8G 17G 27% /
varrun 1,5G 140K 1,5G 1% /var/run
varlock 1,5G 0 1,5G 0% /var/lock
udev 1,5G 52K 1,5G 1% /dev
devshm 1,5G 168K 1,5G 1% /dev/shm
lrm 1,5G 39M 1,5G 3% /lib/modules/2.6.24-19-generic/volatile
/dev/sda6 218G 207G 14M 100% /home
192.168.1.100:/home/nathanvi 100G 188M 95G 1% /home/nathanvi_NSLU2

Nessun commento:

Posta un commento