Network File System o NFS breve è un protocollo di file system distribuito che consente di montare directory remote sul server. NFS consente di accedere a file e cartelle da un server o client diverso. Puoi scrivere su quel server da più client o sistemi remoti su una rete. Questa tecnologia ti offre la flessibilità di condividere una risorsa su più sistemi.
In questo tutorial impareremo come configurare un server NFS e come montare condivisioni NFS su un client usando Ubuntu 20.04.
Prerequisiti
- Due sistemi Ubuntu 20.04. Ogni server dovrebbe avere un utente non root con privilegi sudo e set di firewall UFW.
- Puoi configurare sia il server che il client su una rete privata. Per il nostro tutorial, userò host_ip per denotare host_ip indirizzo e ip_client per fare riferimento all'indirizzo IP del Cliente.
Passaggio 1 - Installa NFS su server e client
Ospite
Dobbiamo installare il nfs-kernel-server
pacchetto sull'host per condividere le tue directory.
$ sudo apt update
$ sudo apt install nfs-kernel-server
Cliente
Per il client, installeremo il nfs-common
pacchetto che consente al Cliente di montare la directory host ma non può ospitare la directory stessa.
$ sudo apt update
$ sudo apt install nfs-common
Passaggio 2:crea directory di condivisione sull'host
Esistono due modi per concedere l'accesso alle directory sull'host al client. Per impostazione predefinita, il server NFS non consente operazioni che richiedono privilegi sudo. Ciò significa che i superutenti sul client non possono scrivere file come root, riassegnare la proprietà o eseguire attività che richiedono privilegi elevati.
Tuttavia, a volte, un client deve eseguire determinate operazioni sull'host che richiedono privilegi elevati ma non necessita dell'accesso come superutente.
Primo metodo
Questo è il modo predefinito per condividere le directory. Rende difficile per un utente root sul client interagire con l'host utilizzando privilegi elevati.
Innanzitutto, crea la directory di condivisione.
$ sudo mkdir /var/nfs/general -p
Se esegui operazioni di root sul client, NFS le tradurrà in nobody:nogroup
credenziali sulla macchina host. Pertanto, dobbiamo assegnare la proprietà appropriata alla directory condivisa.
$ sudo chown nobody:nogroup /var/nfs/general
Secondo metodo
Qui condivideremo la home directory dell'host con il client. Ciò consentirà agli utenti root sul client di accedere correttamente all'host.
Poiché la home directory esiste già sul server host, non è necessario crearla. Non è nemmeno necessario modificare le autorizzazioni su di esso poiché creerà più problemi per gli utenti sul computer host.
Passaggio 3 - Configura NFS sull'host
È ora di configurare NFS per impostare la condivisione.
Apri il file /etc/exports
sul server host.
$ sudo nano /etc/exports
Aggiungi le seguenti righe in fondo, una ciascuna, per ogni directory che condividi.
/var/nfs/general client_ip(rw,sync,no_subtree_check)
/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Esaminiamo tutte queste opzioni e cosa significano.
- rw :Questo dà al client l'accesso in lettura e scrittura alle directory host.
- sincronizzazione :Questa opzione forza NFS a scrivere le modifiche prima di rispondere. Significa che NFS finirà prima di scrivere nella directory host e quindi risponderà al client. Ciò garantisce che si rifletta lo stato effettivo del server host, ma può rallentare la velocità delle operazioni sui file.
- no_subtree_check :questa opzione disabilita il controllo della sottostruttura. Il controllo del sottoalbero è un'operazione in cui ad ogni richiesta NFS, il server deve verificare che il file a cui si accede sia presente e che sia nell'albero esportato. Questa operazione causa problemi quando i file a cui accede un client vengono rinominati. Quindi è meglio lasciarlo disabilitato nella maggior parte dei casi. Ha alcune lievi implicazioni sulla sicurezza, ma può migliorare l'affidabilità.
- no_root_squash :per impostazione predefinita, NFS converte tutte le operazioni eseguite come root dal client in un utente non privilegiato sul server. Questo viene fatto con l'intento di migliorare la sicurezza. Questa opzione disabilita tale comportamento per determinate condivisioni.
Al termine, chiudi il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il server NFS per applicare le modifiche.
$ sudo systemctl restart nfs-kernel-server
Passaggio 4:configurazione del firewall host
La migliore pratica con NFS è abilitarlo in modo specifico per l'indirizzo IP di ciascun client separatamente invece di consentirne l'accesso da qualsiasi luogo.
NFS utilizza la porta 2049. Abilita l'accesso per NFS con il comando seguente.
$ sudo ufw allow from client_ip to any port nfs
Controlla lo stato da verificare.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
2049 ALLOW 167.100.34.78
OpenSSH (v6) ALLOW Anywhere (v6)
Fase 5:crea punti di montaggio sul client
Ora che il nostro host è configurato, è il momento di configurare il client.
Crea due directory per i montaggi sul client.
$ sudo mkdir -p /nfs/general
$ sudo mkdir -p /nfs/home
Ora che abbiamo impostato tutto alla fine dell'host, possiamo montare le condivisioni utilizzando l'indirizzo IP dell'host.
$ sudo mount host_ip:/var/nfs/general /nfs/general
$ sudo mount host_ip:/home /nfs/home
Puoi verificare se sono stati montati correttamente con il seguente comando.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general
123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home
Puoi vedere entrambe le condivisioni montate in fondo all'elenco. Poiché entrambi sono stati montati dallo stesso file system, mostrano l'utilizzo completo del disco e non l'utilizzo effettivo delle directory montate.
Per vedere quanto spazio effettivo viene utilizzato sotto ciascuna montatura, utilizzare il comando seguente.
$ du -sh /nfs/general
36K /nfs/general
Passaggio 6:verifica della condivisione NFS
Crea un file di prova in /var/nfs/general
condividi.
$ sudo touch /nfs/general/general.test
Controlla la sua proprietà.
$ ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test
Questo è stato montato utilizzando le opzioni NFS predefinite e poiché abbiamo creato il file utilizzando root dal computer client, la proprietà sull'host è stata trasferita a nobody:nogroup
. In questo caso, l'utente client non può eseguire lavori di amministrazione sulla macchina dell'host.
Crea un file di prova nella condivisione /nfs/home`.
$ sudo touch /nfs/home/home.test
Controlla la sua proprietà.
$ ls -l /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test
In questo caso, poiché abbiamo creato il file di test utilizzando root dalla macchina client, la proprietà è stata mantenuta sulla macchina host. Questo perché abbiamo usato il no_root_squash
flag che ha consentito l'utente root sulla macchina client come utente root anche sulla macchina host.
Passaggio 7 - Monta condivisioni NFS durante l'avvio
Questi montaggi non verranno mantenuti una volta avviata la macchina client. Per renderli permanenti, dobbiamo modificare il /etc/fstab
file.
Apri il /etc/fstab
file per la modifica.
$ sudo nano /etc/fstab
Incolla le seguenti righe in fondo al file. Ogni riga corrisponde a ogni directory che vogliamo montare all'avvio.
. . .
host_ip:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Per conoscere queste opzioni, controlla la pagina man di nfs
.
$ man nfs
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il server per controllare i supporti.
$ sudo reboot
Accedi al client-server e verifica che i mount siano presenti.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general
123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home
Passaggio 8 - Smonta le condivisioni NFS
Una volta che non hai bisogno di montaggi NFS, puoi smontarli usando il comando seguente.
$ sudo umount /nfs/home
$ sudo umount /nfs/general
Un errore comune è usare unmount
invece di umount
che è il comando effettivo.
Verifica che siano stati smontati correttamente.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
Dovrai anche eliminare le loro voci da /etc/fstab
file in modo che non vengano rimontati all'avvio. Puoi anche semplicemente decommentare le loro voci inserendo un #
personaggio di fronte nel caso in cui sia necessario riutilizzare nuovamente le cavalcature.
Conclusione
Questo conclude il nostro tutorial in cui abbiamo imparato come creare montaggi NFS su una macchina host e come accedervi da diverse macchine client. Se hai domande, spara loro nei commenti qui sotto.