Ricerca nel sito web

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

  1. Prerequisiti
  2. Passaggio 1 - Installa NFS su server e client
    1. Ospite
    2. Cliente

    1. Primo metodo
    2. 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 di umount 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.