NFS è l'acronimo di Network File System. Permette di condividere file e cartelle in rete con altri sistemi. NFS offre un modo semplice per rendere disponibile il contenuto del file system locale a più utenti (o sistemi) su una rete.
Questa condivisione avviene tradizionalmente tra sistemi UNIX/Linux, ma anche i sistemi operativi Microsoft Windows possono accedere alle condivisioni NFS se hanno installato il software appropriato per farlo.
Il supporto per NFS deve essere abilitato o compilato nel kernel.
Come per la maggior parte dei concetti di rete, NFS ha lati client e server. Il lato server consiste nel sistema che esporta (condivide) i file system ad altri sistemi. Il lato client è costituito dai sistemi che devono accedere al file system esportato dal server.
NFSv4 richiede i servizi dei seguenti programmi (daemon):
portmap - mappa i programmi RPC alle normali porte di rete
mountd - gestisce le richieste di montaggio in arrivo
nfsd - è il programma NFS principale che gestisce il trasferimento effettivo dei file
Il file di configurazione /etc/exports serve come elenco di controllo degli accessi per specificare i file system che possono essere esportati via NFS ai client autorizzati. Fornisce informazioni a mountd e al demone del server di file NFS basato sul kernel nfsd.
Le direttve in /etc/exports utilizzano la seguente sintassi:
In questo esercizio condividerete (esporterete) una directory locale da condividere con il sistema partner, ma prima imparerete a gestire il servizio NFS.
NFS è un'applicazione client e server basata su Remote Procedure Call (RPC). È quindi utile avere a portata di mano delle utility RPC che possono essere utilizzate per eseguire interrogazioni, debug e chiamate RPC a server RPC (come i server NFS). rpcinfo è una di queste utilità. La sintassi e le opzioni di utilizzo sono illustrate qui:
Assicurarsi di aver effettuato l'accesso al sistema come utente con privilegi di amministrazione.
Iniziare installando il pacchetto nfs-utils. Questo pacchetto fornisce varie utilità da utilizzare con i client e server NFS. Digitate:
dnf-yinstallnfs-utils
Tra le altre cose, il pacchetto nfs-util appena installato fornisce anche l'unità di servizio systemd (nfs-server.service), necessaria per gestire il daemon NFS sul sistema. Utilizzare systemctl per visualizzare alcuni dei servizi ausiliari che l'unità nfs-server "Vuole". Digitare:
Alcuni servizi importanti e degni di nota necessari a nfs-server sono nfs-idmapd, nfsdcld, rpcbind, rpc-statd-notify, rpc-statd, aut-rpcgss-module.
Il comando rpcinfo è usato per effettuare chiamate RPC a un server RPC e poi riportare i risultati. rpcinfo elenca tutti i servizi RPC registrati con rpcbind. Utilizzare rpcinfo per interrogare il server locale e ottenere un elenco di tutti i servizi RPC registrati. Digitare:
Dall'output di esempio sopra riportato, si può notare che un servizio portmapper è registrato sul server RPC in esecuzione su localhost.
Domanda
A) Cos'è portmapper?
B) Avete scoperto il significato dei vari campi (intestazione della colonna) del comando 'rpcinfo'? (Program, Vers, proto, and service.)
Controlla lo stato di nfs-server.service. Digitare:
systemctlstatusnfs-server
RISULTATObash
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: inactive (dead)
nfs-server.service non è attualmente in esecuzione, secondo l'output del nostro sistema demo.
Utilizzare systemctl per avviare il daemon nfs-server. Digitare:
systemctlstartnfs-server
Ricontrollare lo stato del servizio nfs-server.
Eseguire nuovamente il comando rpcinfo per verificare se qualcosa è cambiato.
Domanda
Quali nuovi servizi sono elencati nell'output di rpcinfo dopo aver avviato nfs-server?
Verificare che nfs-server.service sia impostato per avviarsi automaticamente a ogni riavvio del sistema. Digitare:
systemctlis-enablednfs-server
Se il server nfs è disabilitato sul sistema, eseguire il comando per configurarlo per l'avvio automatico con il sistema.
Se il sottosistema firewall è in esecuzione sul server, è necessario consentire/permettere il traffico NFS attraverso il firewall per i client NFS remoti. Questo può essere fatto eseguendo:
Verrà creata e condivisa una directory chiamata /mnt/nfs. Questa directory sarà il file system di origine esportato dal server NFS.
Assicurarsi di aver effettuato l'accesso al sistema come utente con privilegi amministrativi.
Creare una directory in /mnt chiamata nfs e passare a quella directory.
mkdir/mnt/nfs&&cd/mnt/nfs
Creare 5 file di esempio nella nuova directory creata. Digitare:
touch{1..5}nfs
Utilizzare la funzione della shell HEREDOC per creare una nuova voce di esportazione NFS in /etc/exports. La voce a riga singola desiderata è - /mnt/nfs foocentos2(rw) localhost(rw). Digitare:
Per creare la voce si può anche utilizzare un qualsiasi editor di testo con cui si ha familiarità.
Verificare il contenuto di /etc/exports per assicurarsi che non ci siano errori.
Dopo aver apportato qualsiasi modifica al file /etc/exports è necessario eseguire il comando exportfs. Digitare:
exportfs-r
Utilizzare l'opzione -s con il comando exportfs per visualizzare l'elenco di esportazione corrente adatto per /etc/exports. Ad esempio, visualizzare l'elenco delle directory, degli host consentiti e delle opzioni. Digitare:
Questo esercizio tratta il lato client di NFS. Si proverà ad accedere al server NFS come client.
showmount è una comoda utility per interrogare e mostrare le informazioni di montaggio sui server NFS. Può anche mostrare lo stato del server NFS ed elencare i client che stanno montando dal server. La sintassi e le opzioni sono mostrate qui:
Verrà testata la configurazione del server NFS da Esercizio 1 provando ad accedere alla directory esportata dalla macchina locale, prima di testarla da una macchina remota.
Mentre si è connessi come superutente, creare una directory chiamata /mnt/nfs-local. Questa directory servirà come punto di montaggio di prova per la condivisione NFS.
Come rapido controllo preliminare, eseguire showmount come client per mostrare l'elenco delle esportazioni disponibili sul server. Digitare:
showmount-elocalhost
RISULTATO
Export list for localhost:
/mnt/nfs 172.16.99.0/24,localhost
Si dovrebbero vedere le esportazioni NFS configurate sul server.
Ora si è pronti a montare la condivisione NFS nel punto di montaggio di prova. Digitare:
mount-tnfslocalhost:/mnt/nfs/mnt/nfs-local
Cambiare la propria PWD nella directory /mnt/nfs-local ed elencarne il contenuto.
Mentre ci si trova ancora nella directory /mnt/nfs-local, provare a cancellare alcuni file. Digitare:
cd al punto di montaggio NFS e provare a cancellarne il contenuto. Digitare:
cd/mnt/nfs-remote;rm-f
Il vostro tentativo è andato a buon fine?
Uscire dal serverPR come superutente e rientrare come utente non privilegiato "ying"
Mentre si accede al serverPR con il nome di "ying", si fa il cd della directory montata al punto 2. Digitare:
cd/mnt/nfs-remote/
Prendete nota del contenuto della directory. Se si vedono i file previsti, il laboratorio NFS è stato completato con successo!
Domande
Impostare la configurazione NFS sul server locale (serverXY), in modo tale che il superutente del server H.Q. (hq.example.org) sarà in grado di montare la condivisione nfs (/mnt/nfsXY) per utilizzarla sulla macchina hq.
Il superutente di HQ deve essere in grado di scrivere (creare) nuovi file e cancellare i file sulla condivisione NFS.
Suggerimento
È necessario disabilitare il trattamento speciale di NFS per i file di proprietà di root. Questo si ottiene specificando un'opzione speciale che "svincola" il superutente nel file "/etc/exports". L'opzione speciale è chiamata no_root_squash. Si noti che l'uso dell'opzione no_root_squash è considerata una cattiva pratica e un rischio per la sicurezza. Una voce di esempio per ottenere questo risultato per qualsiasi host che corrisponda a localhost in /etc/exports avrà l'aspetto seguente: