Creare una condivisione con NFS su Ubuntu
Per creare una condivisione via NFS ( Network File System ) lato server ( ovvero sulla macchina che ha i contenuti da condividere ) installare il pacchetto nfs-kernel-server:
1 |
sudo apt-get install nfs-kernel-server |
A questo punto basta andare a configurare le condivisioni:
1 |
sudo nano /etc/exports |
Un esempio di configurazione:
1 2 3 |
/opt/dir1 192.168.1.20(rw,no_root_squash,no_subtree_check) /opt/dir2 computer1(rw,all_squash,anonuid=150,anongid=100) /opt/dir3 *(ro,insecure,all_squash) |
La prima parte è la cartella da condividere, la seconda sono i parametri della condivisione ( qui sotto spiegati ):
- host a cui dare il permesso, può essere un indirizzo IP singolo ( 192.168.1.20 ), un nome host ( computer1 ), una rete ( 192.168.0.0/24 ) o aperto a tutti ( * ); importante non lasciare spazi tra il parametro host e le parentesi altrimenti prende come un parametro *
- rw/ro: stanno per permessi lettura/scrittura ( rw ) o sola lettura ( ro )
- subtree_check/no_subtree_check: sinceramente non sono riuscito a capire bene bene l’utilità effettiva del parametro subtree_check, quindi fino a che non ne capisco il reale uso pratico metto no_subtree_check che pare dare un guadagno di prestazioni
- no_root_squash: dice di non mappare l’utente root remoto ( ID/GID 0 ) come utente anonimo, il suo opposto root_squash invece forza l’utente root remoto ad essere trattato come utente anonimo in maniera da non dargli gli stessi diritti sui file dell’utente root locale
- all_squash: a differenza di root_squash, all_squash considera qualunque utente remoto come utente anonimo locale
- anonuid/anongid: dice al server con quale utente e gruppo locali devono essere trattati gli utenti/gruppi anonimi dalla condivisione
- insecure: dice al server di usare un numero di porta maggiore di quelle riservate ( > 1024 )
Un ulteriore sicurezza la si può ottenere usando il pacchetto portmap:
1 |
sudo apt-get install portmap |
E configurando il file hosts.deny per indicare gli host da negare:
1 |
sudo nano /etc/hosts.deny |
Dove scriviamo ad esempio:
1 |
portmap : ALL |
E configurando poi anche hosts.allow per indicare invece gli host permessi:
1 |
sudo nano /etc/hosts.allow |
Dove scriviamo ad esempio:
1 |
portmap : 192.168.1.20 |
Sulla macchina client invece basta installare il pacchetto nfs-common:
1 |
sudo apt-get install nfs-common |
Creiamo una cartella vuota per il mount della condivisione:
1 |
sudo mkdir /media/remote |
Impostiamo ora i dati di mount automatico nel file fstab:
1 |
sudo nano /etc/fstab |
E aggiungiamo la riga:
1 |
192.168.1.10:/opt/dir1 /media/remote nfs _netdev,defaults 0 0 |
Dove 192.168.1.10 è l’indirizzo IP del server.
Ricarichiamo ora senza fare il reboot della macchina:
1 |
sudo mount -a |
Se non ci sono stati errori ora possiamo accedere alla cartella remota come fosse locale, possiamo anche controllare lo stato del mount con df.
I link usati da riferimento