Come installare client e server NFS su Ubuntu 20.04
Questo tutorial esiste per queste versioni del sistema operativo
- Ubuntu 10.04 (Lucid Lynx)
Su questa pagina
- Prerequisiti
- Passaggio 1 - Installa NFS su server e client
- Ospite
- Cliente
- Primo metodo
- Secondo metodo
Network File System o in breve NFS è un protocollo di file system distribuito che consente di montare directory remote sul server. NFS ti 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 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 utilizzando 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 indicare l'indirizzo host_ip e client_ip per fare riferimento all'indirizzo IP del client.
Passaggio 1: installare NFS su server e client
Ospite
Dobbiamo installare il pacchetto
nfs-kernel-server
sull'host per condividere le tue directory.$ sudo apt update $ sudo apt install nfs-kernel-server
Cliente
Per il client, installeremo il pacchetto
nfs-common
che consente al client di montare la directory host ma non può ospitare la directory stessa.$ sudo apt update $ sudo apt install nfs-common
Passaggio 2: creare directory di condivisione sull'host
Esistono due modi per concedere al client l'accesso alle directory sull'host. 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.
Ma a volte, un client deve eseguire determinate operazioni sull'host che richiedono privilegi elevati ma non necessita dell'accesso come superutente per questo.
Primo metodo
Questo è il modo predefinito di 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 credenziali
nobody:nogroup
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 è necessario modificare le autorizzazioni su di esso poiché creerà più problemi per gli utenti sul computer host.
Passaggio 3: configurare 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 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 il loro significato.
- rw: questo dà al client l'accesso in lettura e scrittura sulle directory host.
- sync: questa opzione forza NFS a scrivere le modifiche prima di rispondere. Significa che NFS prima finirà di scrivere nella directory host e poi risponderà al client. Ciò garantisce che lo stato effettivo del server host venga riflesso ma può rallentare la velocità delle operazioni sui file.
- no_subtree_check: questa opzione disabilita il controllo del sottoalbero. Il controllo del sottoalbero è un'operazione in cui con 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 traduce tutte le operazioni eseguite come root dal client a 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 digitando Y quando richiesto.
Riavvia il server NFS per applicare le modifiche.
$ sudo systemctl restart nfs-kernel-server
Passaggio 4: configurare il firewall dell'host
La migliore pratica con NFS è abilitarlo specificamente per ogni indirizzo IP client separatamente invece di consentire l'accesso da qualsiasi luogo.
NFS utilizza la porta 2049. Abilitare l'accesso per NFS con il seguente comando.
$ sudo ufw allow from client_ip to any port nfs
Controlla lo stato per verificare.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 2049 ALLOW 167.100.34.78 OpenSSH (v6) ALLOW Anywhere (v6)
Passaggio 5: creazione di 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 degli host, possiamo montare le condivisioni utilizzando l'indirizzo IP degli 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 ogni montaggio, utilizzare il seguente comando.
$ du -sh /nfs/general 36K /nfs/general
Passaggio 6: testare la condivisione NFS
Crea un file di prova nella condivisione
/var/nfs/general
.$ 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 dalla macchina client, la proprietà sull'host è stata trasferita a
nobody:nogroup
. In questo caso, l'utente client non può eseguire lavori amministrativi sulla macchina 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
Qui, poiché abbiamo creato il file di test utilizzando root dal computer client, la proprietà è stata mantenuta sul computer host. Questo perché abbiamo utilizzato il flag
no_root_squash
che consentiva l'utente root sulla macchina client come utente root anche sulla macchina host.Passaggio 7: montare le condivisioni NFS durante l'avvio
Questi montaggi non verranno mantenuti una volta avviato il computer client. Per renderli permanenti, dobbiamo modificare il file
/etc/fstab
.Apri il file
/etc/fstab
per modificarlo.$ sudo nano /etc/fstab
Incolla le seguenti righe in fondo al file. Ogni riga corrisponde a ciascuna 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 immettendo Y quando richiesto.
Riavvia il server per controllare i montaggi.
$ sudo reboot
Accedi al client-server e verifica che i montaggi 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: smontare le condivisioni NFS
Una volta che non hai bisogno di montaggi NFS, puoi smontarli usando il seguente comando.
$ sudo umount /nfs/home $ sudo umount /nfs/general
Un errore comune è usare
unmount
invece diumount
che è il comando vero e proprio.Verificare 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 dal file
/etc/fstab
in modo che non vengano rimontate all'avvio. Puoi anche semplicemente decommentare le loro voci inserendo un carattere#
davanti nel caso tu abbia bisogno di riutilizzare nuovamente i supporti.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, sparale nei commenti qui sotto.