Network File System o NFS è un protocollo di file system distribuito che consente agli host remoti di montare file system su una rete ed eseguire operazioni sui file come se fossero montati localmente. Ciò è particolarmente utile quando desideri condividere risorse da un server su più client o consentire a più client di scrivere su un unico spazio di archiviazione.
In questo tutorial imparerai come installare e configurare il server NFS e i client NFS basati su Rocky Linux 8. Per questo, configureremo un host o un server per condividere file e un client per accedere ai file host utilizzando un montaggio NFS .
Prerequisiti
- Due server Rocky Linux 8. Ognuno di questi dovrebbe avere un utente non root con privilegi sudo.
- Sia l'host che il client dovrebbero avere un indirizzo IP statico. Puoi anche configurare entrambi su una rete privata. Per il nostro tutorial utilizzeremo host_ip per indicare l'indirizzo IP dell'Host e client_ip per fare riferimento all'indirizzo IP del Cliente.
Passaggio 1:installazione di NFS su host e client
Ospite
Per installare i pacchetti NFS, devi installare nfs-utils
pacchetto. Fornisce un demone per il server NFS e gli strumenti correlati.
Installa il pacchetto.
$ sudo dnf install nfs-utils
Abilita e avvia il nfs-server
servizio. Servizi rimanenti necessari per il montaggio e la condivisione NFS come nfsd
, nfs-idmapd
, rpcbind
, rpc.mountd
, lockd
, rpc.statd
, rpc.quotad
e rpc.idmapd
avvia automaticamente insieme ad esso.
$ sudo systemctl enable nfs-server --now
Verifica la versione dell'installazione di NFS.
$ sudo cat /proc/fs/nfsd/versions-2 +3 +4 +4.1 +4.2
Le versioni NFS 3 e 4 sono abilitate per impostazione predefinita e la versione 2 è disabilitata. NFSv2 è piuttosto vecchio e obsoleto, e quindi puoi vedere il -ve firmare davanti ad esso.
NFS memorizza le sue configurazioni in /etc/nfsmount.conf
e /etc/nfs.conf
File. Il /etc/nfsmount.conf
è configurare i montaggi NFS mentre /etc/nfs.conf
consiste nel configurare il demone NFS e gli strumenti associati. Le impostazioni predefinite sono sufficienti per il nostro tutorial e non è richiesta alcuna modifica.
Cliente
Sul client, installa nfs-utils
e nfs4-acl-tools
pacchetti.
$ sudo dnf install nfs-utils nfs4-acl-tools
Fase 2:crea le directory di condivisione sull'host
Utilizzeremo due esempi con impostazioni di configurazione diverse:uno con un montaggio generico e uno condividendo la home directory dell'host.
Le directory montate NFS non fanno parte del Client. Pertanto, NFS non può eseguire attività che richiedono privilegi di superutente su di esse. Significa che il client non può cambiare la proprietà, scrivere su di esso come utente root o eseguire attività di alto livello. Tuttavia, ci sono casi in cui un utente attendibile sul client deve eseguire tali attività senza richiedere l'accesso come superutente sull'host. Il server NFS può essere configurato per consentire ciò, ma corre il rischio che un client possa accedere all'host.
Lavorare con una montatura per uso generico
Per il nostro primo caso, creeremo un montaggio semplice che utilizza il comportamento NFS predefinito, il che significa che il client non può eseguire attività che richiedono privilegi di superutente.
Crea una directory condivisa.
host:$ sudo mkdir /var/nfs/share -p
L'utente root dell'host sarà proprietario di questa directory poiché abbiamo usato sudo
per crearlo.
host:$ ls -l /var/nfstotal 0drwxr-xr-x. 2 radice radice 6 13 dicembre 07:30 condividi
NFS tradurrà tutte le operazioni di root sul lato client in nobody:nobody
credenziali per motivi di sicurezza. Pertanto, dobbiamo abbinarli sul lato host.
host:$ sudo chown nessuno:nobody /var/nfs/general
Lavorare con la home directory
Per il nostro secondo caso, renderemo disponibile al client la home directory sull'host. Non è necessario crearlo poiché esiste già. Non è necessario modificare alcuna autorizzazione in quanto ciò influirebbe sugli utenti sulla macchina host.
Passaggio 3 - Configurazione delle esportazioni NFS sull'host
Apri il file /etc/exports
sulla macchina host per la modifica.
host:$ sudo nano /etc/exports
Incolla il codice seguente nel file.
/var/nfs/share client_ip(rw,sync,no_subtree_check)/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Ciascuna directory e la relativa configurazione devono trovarsi su una riga separata. Sostituisci il client_ip
valore con l'indirizzo IP effettivo della macchina client.
Esaminiamo tutte le opzioni per le esportazioni NFS.
- rw - fornisce alla macchina client l'accesso in lettura e scrittura sul volume NFS.
- sincronizzazione - questa opzione forza NFS a scrivere le modifiche sul disco prima di rispondere. Questa opzione è considerata più affidabile. Tuttavia, riduce anche la velocità delle operazioni sui file.
- no_subtree_check - questa opzione impedisce il controllo del sottoalbero, un processo in cui l'host deve verificare se il file è disponibile insieme ai permessi per ogni richiesta. Può anche causare problemi quando un file viene rinominato sull'host mentre è ancora aperto sul client. Disabilitarlo migliora l'affidabilità di NFS.
- no_root_squash - Per impostazione predefinita, NFS converte le richieste da un utente root sul client in un utente non privilegiato sull'host. Questa opzione disabilita tale comportamento e dovrebbe essere utilizzata con attenzione per consentire al client di accedere all'host.
Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Per esportare le condivisioni, esegui il comando seguente.
host:$ sudo exportfs -arvexporting client_ip:/homeexporting client_ip:/var/nfs/share
- -a - questa opzione fa sì che tutte le directory vengano esportate.
- -r - questa opzione fa sì che tutte le directory vengano esportate costruendo una nuova lista in
/var/lib/nfs/etab
directory. Questa opzione viene utilizzata per aggiornare l'elenco di esportazione con tutte le modifiche apportate a/etc/exports
. - -v - abilita l'output dettagliato.
Per elencare tutte le directory esportate, eseguire il comando seguente. Mostrerà tutte le opzioni, comprese quelle predefinite che non sono state specificate in /etc/exports
file.
host:$ sudo exportfs -s/var/nfs/share client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)/home client_ip(sync,wdelay,hide,no_subtree_check, sec=sys,rw,secure,no_root_squash,no_all_squash)
Fase 4 - Configurazione del firewall sull'host
Rocky Linux utilizza Firewalld Firewall. Controlla lo stato del firewall.
host:$ sudo firewall-cmd --staterunning
Ciò indica che è attivo e funzionante correttamente.
Il firewall funziona con diverse zone e la zona pubblica è quella predefinita che useremo. Elenca tutti i servizi e le porte attive sul firewall.
host:$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
cockpit dhcpv6-client ssh
Successivamente, dobbiamo consentire il traffico ai servizi NFS necessari - mountd
, nfs
e rpc-bind
. Dobbiamo anche consentire l'accesso dall'IP del client. Se i tuoi client e server host si trovano nella stessa sottorete, non è necessario aggiungere l'indirizzo IP del client.
host:$ sudo firewall-cmd --permanent --add-service=nfshost:$ sudo firewall-cmd --permanent --add-service=rpc-bindhost:$ sudo firewall-cmd --permanent --add -service=mountdhost:$ sudo firewall-cmd --permanent --add-source=client_IP
Ricarica il firewall per applicare le modifiche.
host:$ sudo firewall-cmd --reload
Fase 5 - Creazione di punti di montaggio e directory sul client
Ora che il server/host NFS è configurato, il passaggio successivo consiste nell'impostare i punti di montaggio e le directory sul client. Puoi eseguire showmount
comando sul client per controllare l'elenco dei file system esportati sull'Host.
client:$ showmount -e host_ipEsporta elenco per host_ip:/home host_ip/var/nfs/share host_ip
Creare sempre una nuova directory come punti di montaggio sul client o utilizzare una directory vuota esistente. Se c'è un file in una directory che monti, verrà nascosto.
Crea le directory di montaggio.
client:$ sudo mkdir -p /nfs/shareclient:$ sudo mkdir -p /nfs/home
Monta le condivisioni utilizzando l'indirizzo IP dell'host.
client:$ sudo mount host_ip:/var/nfs/share /nfs/shareclient:$ sudo mount host_ip:/home /nfs/home
Verifica che il montaggio sia riuscito.
client:$ df -hFilesystem Dimensioni utilizzate Avail Use% Ondevtmpfs montato 370M 0 370M 0% /devtmpfs 405M 0 405M 0% /dev/shmtmpfs 405M 16M 389M 4% /runtmpfs 405M 0 405M 0% /sys/fs/cgroup /dev/vda1 25G 2.4G 23G 10% /tmpfs 81M 0 81M 0% /run/user/1000host_ip:/var/nfs/share 25G 2.4G 23G 10% /nfs/sharehost_ip:/home 25G 2.4G 23G 10% / nfs/home
Entrambe le condivisioni sono montate dallo stesso file system. Quindi mostrano lo stesso utilizzo del disco.
Puoi anche usare il mount
comando per verificare.
cliente:$ monta | grep nfsrpc_pipefs su /var/lib/nfs/rpc_pipefs tipo rpc_pipefs (rw,relatime)host_ip:/var/nfs/share su /nfs/share tipo nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072, namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)host_ip:/home su /nfs/home digita nfs4 (rw,relatime, vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
Passaggio 6:verifica dell'accesso NFS
Test della condivisione per scopi generici
Scrivi un file di prova in /var/nfs/share
condividi.
client:$ sudo touch /nfs/share/test.txt
Controlla la sua proprietà.
client:$ ls -l /nfs/share/test.txt-rw-r--r--. 1 nessuno nessuno 0 13 dic 08:08 /nfs/share/test.txt
Poiché abbiamo montato questo volume utilizzando le impostazioni NFS predefinite e creato il file sul client utilizzando sudo
, la proprietà del file è impostata su nobody:nobody
. I superutenti client non possono eseguire attività amministrative sulla condivisione.
Test della condivisione della home directory
Scrivi un file di prova su /nfs/home
condividi.
client:$ sudo touch /nfs/home/home.txt
Controlla la sua proprietà.
client:$ ls -l /nfs/home/home.txt-rw-r--r--. 1 radice radice 0 13 dic 08:09 /nfs/home/home.txt
Dato che abbiamo usato il no_root_squash
opzione, consentiva all'utente root del client di agire come root sulla condivisione stessa.
Fase 7 - Rendi permanenti i punti Mount
Le condivisioni NFS per impostazione predefinita sono temporanee e devono essere montate all'avvio. Possiamo renderli permanenti modificando il /etc/fstab
file sul client.
Apri il file /etc/fstab
per la modifica.
client:$ sudo nano /etc/fstab
Incolla le seguenti righe in fondo al file.
Puoi scoprire di più sulle opzioni elencate sopra eseguendo i seguenti comandi.
client:$ man nfsclient:$ man mount
Se vuoi leggerli online, puoi cercare su Google la frase man nfs
e man mount
per saperne di più su queste opzioni.
Passaggio 8 - Smonta la condivisione NFS
Se non desideri più i montaggi remoti sul tuo sistema, puoi smontarli usando il umount
comando. Nota che il comando si chiama umount e non smontare che è un errore comune.
Esci dai supporti condivisi e smontali.
client:$ cd ~client:$ sudo umount /nfs/shareclient:$ sudo umount /nfs/home
Se non hai più bisogno che le condivisioni siano montate nuovamente al riavvio, assicurati di commentare le voci corrispondenti nel /etc/fstab
file inserendo un #
firmare davanti a loro.
Conclusione
In questo tutorial, abbiamo imparato come creare un server host NFS e montare directory utilizzandolo, che abbiamo condiviso con un client NFS. Se lo stai implementando in una rete privata, non dovrebbero esserci problemi, ma se lo stai utilizzando in produzione, dovresti ricordare che il protocollo non è crittografato e dovresti implementare un po' di autenticazione per proteggere i tuoi dati.
Se hai domande, pubblicale nei commenti qui sotto.