GNU/Linux >> Linux Esercitazione >  >> Linux

Amministrazione di Network File System (NFS) su Linux

File system di rete , ha anche abbreviato NFS , sono file system a cui è possibile accedere tramite la rete.

Rispetto ai filesystem che possono essere locali sulla tua macchina, i filesystem di rete sono archiviati su macchine distanti a cui si accede tramite uno specifico protocollo di rete:il protocollo NFS .

NFS appartiene alla grande famiglia di protocolli di condivisione file, tra cui SMB, FTP, HTTP e molti altri protocolli di condivisione file.

NFS ha il suo modo di accedere e proteggere i filesystem distanti, così come diversi modi per proteggere l'accesso ai filesystem remoti.

In questo tutorial, configurare un server NFS su un computer remoto e installa un client NFS per accedervi.

Configureremo il server NFS in base alla risorsa che vogliamo condividere e vedremo i piccoli trucchi che c'è da sapere su NFS.

Cosa imparerai

Se segui questo tutorial fino alla fine, imparerai i seguenti concetti:

  • Come puoi configurare un server NFSv4 , crea una cartella condivisa ed esportala su client remoti;
  • Come installare un client NFS e come associarlo al tuo server NFS;
  • Come funziona l'autenticazione utente su NFS e perché l'autenticazione NFS è considerata debole;
  • Cos'è schiacciare e perché dovresti sempre abilitare root_squashing;
  • Come NFS gestisce la modifica simultanea rispetto ad altri protocolli di condivisione file.

È un programma piuttosto lungo, quindi senza ulteriori indugi, iniziamo vedendo che puoi configurare il tuo server NFSv4.

Configurazione di un server NFSv4

Per questo tutorial, utilizzeremo una distribuzione Kubuntu standard, ma il resto di questo tutorial dovrebbe funzionare allo stesso modo se stai utilizzando un'altra distribuzione.

$ uname -a

Linux kubuntu 5.3.0-18-generic #19-Ubuntu GNU/Linux

Prima di installare qualsiasi pacchetto, assicurati che il tuo sistema sia configurato correttamente con il comando apt.

sudo apt-get update

Ora che il tuo sistema è aggiornato, dovrai installare diversi pacchetti per il tuo server NFS.

Installazione del server NFSv4

Per installare un server NFS su Linux, devi installare il "nfs-kernel-server ” con app.

$ sudo apt-get install nfs-kernel-server

Come puoi vedere dallo screenshot sopra, nfs-kernel-server viene fornito con alcuni file di configurazione che dovrai modificare:

  • esportazioni :utilizzato come file di configurazione per impostare le directory da esportare tramite NFS;
  • server-kernel-nfs :che può essere utilizzato se desideri impostare l'autenticazione o modificare i parametri relativi a RPC del tuo server NFS.

Per questo tutorial, siamo solo configurati per modificare il file di esportazione per esportare le nostre directory.

Esportazione di directory con esportazioni

Come indicato sopra, modificheremo il file di esportazione che si trova nella directory etc per condividere le directory.

La sintassi per il file di esportazione è piuttosto semplice.

Il file di esportazione è un file separato da colonne composto dai seguenti campi:

  • Rubrica locale :la directory da esportare sul filesystem locale;
  • IP o nome host della macchina a cui si desidera concedere l'accesso;
  • Opzioni NFS come rw (per lettura-scrittura), sync (significa che le modifiche apportate vengono scaricate direttamente sul disco)

Innanzitutto, devi creare una directory che verrà esportata sul tuo sistema. Ovviamente non devi crearlo se la directory esiste già sul tuo computer.

$ sudo mkdir -p /var/share

Per ora, puoi lasciare che il root sia il proprietario e il gruppo che possiede il file, ma lo modificheremo in seguito a seconda dei permessi che vogliamo per questa cartella condivisa.

Ora che la tua cartella condivisa è stata creata, dovrai aggiungerla al file di esportazione per poter essere esportata.

Torna al tuo /etc/exports file e aggiungi le informazioni che abbiamo specificato nell'elenco puntato sopra.

Nella prima colonna, devi specificare la cartella da esportare che è la cartella condivisa che abbiamo appena creato.

Successivamente, devi specificare l'IP o i nomi host che possono montare questa directory in locale.

In questo caso, abbiamo scelto di avere un IP di rete impostato nel file di esportazione, ma potrebbe essere diverso per te.

Per esportare tutte le directory specificate nel file "exports", è necessario utilizzare "exportfs ” con l'opzione “-a” per “tutti”.

$ sudo exportfs -a

Successivamente, puoi verificare che le tue cartelle siano state esportate correttamente eseguendo il comando "exportfs" con l'opzione "-v" per "verbose".

$ sudo exportfs -v

Come probabilmente avrai notato, alcune opzioni che non sono state specificate nel file di esportazione sono state impostate dal server NFS per impostazione predefinita:

  • rw :le operazioni di lettura e scrittura sono autorizzate sul volume (questa opzione era originariamente specificata nel file);
  • ritardo :il server NFS indurrà un piccolo ritardo di scrittura se sospetta che più operazioni di scrittura siano attualmente eseguite contemporaneamente;
  • root_squash :l'account "root" verrà "schiacciato" all'utente anonimo per impostazione predefinita. Se non sai cos'è lo schiacciamento, puoi leggerlo nelle prossime sezioni;
  • no_subtree_check :per impostazione predefinita, il server NFS verificherà che l'operazione richiesta faccia parte del filesystem esportato sul server;
  • sec=sys :per impostazione predefinita, NFS utilizzerà le credenziali impostate sul server. Se il tuo sistema utilizza l'autenticazione locale, verranno utilizzate quelle credenziali, ma se viene utilizzato NIS, verrà utilizzato come sistema di autenticazione;
  • protetto :questa opzione verifica che le richieste provengano da una porta inferiore a 1024 (ricordiamo che le richieste client NFS provengono dalla porta 111);
  • no_all_squash :ad eccezione dell'account "root", gli altri utenti non vengono schiacciati quando interagiscono con il server NFS.

Personalizza le regole del firewall per NFS

Affinché i nostri client possano connettersi al nostro server NFS, dovrai assicurarti che il firewall sia configurato per accettare connessioni NFS.

Come rapido promemoria, NFS viene eseguito sulla porta 2049 del server.

Per Debian e Ubuntu, probabilmente stai eseguendo un firewall UFW (puoi verificarlo con il comando "ufw status")

Per consentire le connessioni NFS al tuo server, esegui "ufw ” come root e consenti connessioni sulla porta 2049.

$ sudo ufw allow 2049

D'altra parte, se stai eseguendo una distribuzione Red Hat o CentOS, dovrai modificare il firewall integrato "firewalld".

$ sudo firewall-cmd --add-port=2049/tcp

Infine, assicurati che la tua scheda di rete esponga correttamente la porta 2049 al mondo esterno con il comando "netstat".

$ netstat -tulpn | grep 2049

Ok, ora che ti sei assicurato che il tuo server NFS sia correttamente attivo e funzionante e che le tue condivisioni siano esportate, vediamo come puoi configurare i tuoi client NFS.

Configurazione dei client NFSv4

La configurazione sul client è piuttosto semplice, ma avrai bisogno di pacchetti specifici per montare le partizioni NFS.

Montaggio delle partizioni NFS sui client

Innanzitutto, devi installare "nfs-utils ” per poter montare i pacchetti NFS.

Ovviamente devi avere i privilegi sudo per installare nuovi pacchetti. Ecco alcuni tutorial per Debian/Ubuntu e CentOS/RHEL.

$ sudo apt-get install nfs-utils

$ sudo yum install nfs-utils

Ora che il pacchetto è installato, puoi semplicemente montare la partizione usando la seguente sintassi

$ mount -t nfs <dest_ip_or_hostname>:<remote_path> <mount_point>

Ad esempio, supponiamo che il tuo server NFS si trovi sull'indirizzo IP 192.168.178.31/24 e che desideri condividere la cartella /var/share sul server.

Per esportare questa cartella, dovresti scrivere il seguente comando

$ sudo mount -t nfs 192.168.178.31:/var/share /var/share

La risoluzione dei problemi del client NFS non è molto pratica, tuttavia è il tuo terminale in mano, probabilmente significa che non puoi raggiungere l'host di destinazione.

Se il comando viene eseguito correttamente, dovresti essere in grado di elencare il tuo nuovo punto di montaggio utilizzando il comando df.

$ df -H

Creazione di nuovi file sul volume NFS

Come probabilmente ricorderai dall'ultima sezione, abbiamo visto che il nostro volume NFS è configurato per schiacciare l'account di root per impostazione predefinita ma nessun altro utente.

Inoltre, la cartella condivisa è di proprietà di root e del gruppo root.

Se provi a creare nuovi file su questo volume, riceverai un errore di autorizzazione negata, anche quando provi a crearli con sudo.

Perché?

L'account client non appartiene al gruppo "root" sul server e se provi a creare un file come root sul client, verrai schiacciato sull'account anonimo.

Una parola sulla gestione degli utenti NFS

Prima di configurare il nostro server e client per condividere correttamente le cartelle, diamo una rapida rassegna su come funziona la gestione degli utenti sui volumi NFS.

Come probabilmente avrai appreso nei nostri tutorial precedenti, un utente viene identificato da un ID utente (chiamato anche UID ) e questo UID è univoco su una macchina ma non sarà univoco su più macchine di uno stesso sito.

Tuttavia, se il tuo sistema non è configurato per funzionare con un sistema di gestione utenti centrale (come NIS, OpenLDAP o Samba), i tuoi ID utente potrebbero entrare in conflitto sui sistemi su cui stai operando.

In questo caso, se consideriamo che non hai un sistema di gestione centrale, dichiareremo semplicemente che stai mantenendo un elenco di utenti coerente tra i sistemi.

Ora che utente e gruppi sono coerenti tra gli host, creiamo un gruppo che sarà in grado di aggiungere ed eliminare file nella cartella.

Creazione di un gruppo per la condivisione NFS

In questo tutorial, assumeremo che "amministratori ” possono aggiungere ed eliminare file in questa cartella.

Innanzitutto, sul server, utilizza "groupadd comando ” per creare questo nuovo gruppo

$ sudo groupadd administrators

Puoi quindi modificare il gruppo che possiede la tua condivisione NFS in "amministratori

$ sudo chown :administrators /var/share

Sul server, aggiungi gli utenti autorizzati al gruppo che hai appena creato.

$ sudo usermod -aG administrators <user>

Non devi riesportare i tuoi Drive condivisi, puoi semplicemente iniziare a creare file ora che le autorizzazioni sono state configurate correttamente.

Sul client, creiamo un nuovo file nel Drive condiviso utilizzando il comando touch.

$ cd /var/share && touch file-example

Sul server, potrai vedere che il tuo file è stato creato correttamente.

Eccezionale!

Hai creato con successo un volume NFS e l'hai condiviso con le macchine client.

Montaggi NFS persistenti con fstab

Come già saprai dai tutorial precedenti, il montaggio di un'unità su Linux utilizzando il comando mount non la rende persistente durante i riavvii.

Per rendere persistenti i tuoi mount, devi aggiungerli al file fstab.

Come utente privilegiato, modifica il file fstab e aggiungi una riga per il tuo disco NFS

#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.

<ip_address>:<remote_path>   <mountpoint>  nfs  <options>  0   0

Ad esempio, dato il volume NFS creato prima su "192.168.178.31" nel percorso "/var/share", questo darebbe

#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.

192.168.178.31:/var/share  /var/share  nfs  defaults  0   0

Se stai usando un sistema basato su systemd, puoi ricaricare i demoni dipendenti eseguendo il comando daemon-reload

$ systemctl daemon-reload

Eccezionale!

Ora puoi riavviare la tua macchina client e verificare che l'unità sia stata montata correttamente all'avvio.

Andare oltre con NFS

In questa sezione, discuteremo argomenti avanzati su NFS, in particolare come viene gestita la modifica simultanea e come puoi modificare le tue configurazioni NFS su host client specifici.

Modifica simultanea

Quando usi NFS, probabilmente finirai per modificare alcuni file insieme a più altri utenti.

In modo nativo, il server NFS non ti impedirà di modificare lo stesso file.

Se stai usando vi come editor di testo, ti verrà notificato che alcune modifiche sono già state eseguite da un altro utente (tramite un file swp).

Tuttavia, gli scambi di file NFS non ti impediranno di modificare il file:visualizzerà solo un messaggio di avviso sui file attualmente in fase di modifica.

Inoltre, se stai utilizzando altri editor di testo, non verrà creato alcun file "swp" e il file avrà il contenuto dell'ultima modifica eseguita.

Tieni presente che esiste un modo per bloccare i file in locale utilizzando blocco_locale "parametro lato client , puoi controllare la documentazione di Linux se sei interessato a questa opzione.

Esportazione di cartelle in indirizzi IP client specifici

In alcuni casi, potrebbe essere necessario esportare una cartella in client specifici nella sottorete.

Per determinare l'indirizzo IP del tuo client, vai al computer del client e usa il comando "ip" con l'opzione "a" per l'indirizzo.

$ ip a

Come puoi vedere, il mio host client ha due interfacce:l'interfaccia di loopback (o localhost) e una scheda di rete denominata "enp0s3".

Quest'ultimo ha un indirizzo IP già assegnato all'interfaccia che si vede alla riga “inet” :192.168.178.27/24.

Se vuoi esportare le tue cartelle in un'intera sottorete, puoi specificare l'IP della sottorete:di conseguenza, ogni IP della sottorete potrà esportare la tua cartella.

Allo stesso modo, è possibile controllare l'hostname della macchina client per esportarlo successivamente sul server.

$ hostname

Tornando al file di esportazione, puoi scegliere di esportare uno o più indirizzi IP o di esportare una macchina tramite il suo nome host.

Monitoraggio NFS

Quando installi il pacchetto nfs-common, finirai per installare anche "nfsstat ” utility che è un programma che espone le statistiche NFS.

Usando nfsstat, sarai in grado di vedere il numero totale di operazioni eseguite sul tuo server NFS e l'attività corrente.

Conclusione

In questo tutorial hai imparato come puoi configurare un server NFSv4 facilmente utilizzando l'utilità nfs-kernel-server.

Hai anche imparato come montare le unità sui client e le diverse opzioni che hai per modificare i tuoi montaggi NFS.

Infine, hai approfondito le unità NFS e ho appreso come viene eseguita la gestione degli utenti tra più macchine host e come configurare il proprio sistema di gestione degli utenti.

Se sei interessato all'amministrazione del sistema Linux, abbiamo una sezione completa dedicata ad esso sul sito Web, quindi assicurati di dare un'occhiata!


Linux
  1. Migliora le prestazioni del sistema Linux con noatime

  2. Configurazione rapida del server NFS su sistema Linux Redhat 7

  3. Cos'è NFS e come installarlo su Linux

  4. Risoluzione dei problemi comuni di NFS in Linux

  5. Linux:dove mettere il file di scambio

I miei comandi per la risoluzione dei problemi di rete Linux

Il mio viaggio nell'amministrazione del sistema Linux

Come controllare/riparare il file system Linux all'avvio

Come riparare gli errori del file system in Linux Mint

Che cos'è il file system Linux? Guida facile

Domande dell'intervista su Linux Network File System (NFS).