Network File System¶
Conoscenza:
Complessità:
Tempo di lettura: 15 minuti
Network File System (NFS) è un sistema di condivisione di file montato in rete.
Generalità¶
NFS è un protocollo client/server: il server fornisce le risorse del file system per tutta o parte della rete (clients).
La comunicazione tra i client e il server avviene mediante il sevizio Remote Procedure Call (RPC).
I file remoti vengono montati in una directory e appaiono come un file system locale. Gli utenti client accedono senza problemi ai file condivisi dal server, sfogliando le directory come se fossero locali.
Installazione¶
Per funzionare, NFS richiede due servizi:
- Il servizio
network
(ovviamente) - Il servizio
rpcbind
Visualizzare lo stato dei servizi con il comando:
systemctl status rpcbind
Se il pacchetto nfs-utils
non è installato:
sudo dnf install nfs-utils
Il pacchetto nfs-utils
richiede l'installazione di diverse dipendenze, tra cui rpcbind
.
Avviare il servizio NFS con:
sudo systemctl enable --now nfs-server rpcbind
L'installazione del servizio NFS crea due utenti:
nobody
: usato per le connessioni anonimerpcuser
: per il funzionamento del protocollo RPC
È necessario configurare il firewall:
sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
sudo firewall-cmd --reload
Configurazione del server¶
Attenzione
I diritti delle directory e i diritti NFS devono essere coerenti.
Il file /etc/exports
¶
Impostare le condivisioni delle risorse con il file /etc/exports
. Ogni riga di questo file corrisponde a una condivisione NFS.
/share_name client1(permissions) client2(permissions)
- /share_name: Percorso assoluto della directory condivisa
- clients: Clienti autorizzati ad accedere alle risorse
- (permissions): Permessi sulle risorse
Dichiarare le macchine autorizzate ad accedere alle risorse con:
- Indirizzo IP:
192.168.1.2
- Indirizzo di Rete:
192.168.1.0/255.255.255.0
o formato CIDR192.168.1.0/24
- FQDN: client_*.rockylinux.org: consente gli FQDN che iniziano con client_ dal dominio rockylinux.org
*
per tutti
È possibile inserire più impostazioni del client sulla stessa riga, separate da uno spazio.
Permessi sulle risorse¶
Esistono due tipi di permessi:
ro
: di sola letturarw
: lettura-scrittura
Se non viene specificato alcun diritto, il permesso applicato sarà di sola lettura.
Per impostazione predefinita, il server NFS conserva gli UID e i GID degli utenti client (tranne che per root
).
Per forzare l'uso di un UID o GID diverso da quello dell'utente che scrive sulla risorsa, specificare le opzioni anonuid=UID
e nongid=GID
, oppure concedere l'accesso anonimo
ai dati con l'opzione all_squash
.
Attenzione
Un parametro, no_root_squash
, identifica l'utente root del client come utente root del server. Questo parametro può essere pericoloso dal punto di vista della sicurezza del sistema.
L'attivazione del parametro root_squash
è predefinita (anche se non specificata) e identifica root
come un utente anonymous
.
Casi di studio¶
-
/share client(ro,all_squash)
Gli utenti client hanno accesso alle risorse in sola lettura e sono identificati come anonimi sul server. -
/share client(rw)
Gli utenti client possono modificare le risorse e mantenere il proprio UID sul server. Soloroot
è identificato comeanonymous
. -
/share client1(rw) client2(ro)
Gli utenti della workstation client 1 possono modificare le risorse, mentre quelli della workstation client 2 hanno accesso in sola lettura. Gli UID sono conservati sul server e soloroot
è identificato comeanonymous
. -
/share client(rw,all_squash,anonuid=1001,anongid=100)
Gli utenti del Client1 possono modificare le risorse. L'UID viene modificato in1001
e il GID in100
sul server.
Il comando exportfs
¶
Il comando exportfs
(file system exported) è usato per gestire la tabella dei file locali condivisi con i client NFS.
exportfs [-a] [-r] [-u share_name] [-v]
Opzioni | Descrizione |
---|---|
-a |
Abilita le condivisioni NFS |
-r |
Applica le condivisioni dal file /etc/exports |
-u share_name |
Disabilita una determinata condivisione |
-v |
Visualizza l'elenco delle condivisioni |
Il comando showmount
¶
Il comando showmount
monitora i client.
showmount [-a] [-e] [host]
Opzioni | Descrizione |
---|---|
-e |
Visualizza le condivisioni sul server designato |
-a |
Visualizza tutte le condivisioni correnti sul server |
Questo comando determina anche se la workstation client è autorizzata a montare le risorse condivise.
Nota
showmount
ordina e nasconde i duplicati nei risultati, quindi è impossibile determinare se un client ha effettuato più montaggi della stessa directory o meno.
Configurazione del client¶
Le risorse condivise su un server NFS sono accessibili attraverso un punto di montaggio sul client.
Se necessario, creare una cartella locale per il montaggio:
$ sudo mkdir /mnt/nfs
Elenca le condivisioni NFS disponibili sul server:
$ showmount –e 172.16.1.10
/share *
Montare la condivisione NFS del server:
$ mount –t nfs 172.16.1.10:/share /mnt/nfs
L'automazione del montaggio può essere effettuata all'avvio del sistema con il file /etc/fstab
:
$ sudo vim /etc/fstab
172.16.1.10:/share /mnt/nfs nfs defaults 0 0
Author: Antoine Le Morvan
Contributors: Steven Spencer, Serge, Ganna Zhyrnova