Stai cercando un'applicazione che ti permetta di condividere file e directory in rete? Per più clienti? Probabilmente hai bisogno di NFS (Network File System)! Un server Ubuntu NFS ti consente di creare directory condivise per vari client con un controllo di accesso aggiuntivo.
Non sei un lettore? Guarda questo video tutorial correlato! Non vedi il video? Assicurati che il blocco degli annunci sia disattivato.In questo tutorial imparerai come configurare un server NFS e condividere file in modo sicuro tra più macchine.
Pronto? Continua a leggere e inizia la condivisione sicura dei file!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Per seguire, assicurati di avere i seguenti requisiti:
- Un server Linux e un client sulla stessa rete:questa demo utilizza un server Ubuntu 20.04 con nome host come
nfs-server
e un client Ubuntu 20.04 con nome host comeclient
. Ma puoi usare un'altra distribuzione Linux, come Debian, CentOS o Fedora.
- Un utente non root con privilegi sudo.
Installazione di un server NFS Ubuntu
NFS consente agli utenti l'accesso sicuro ai file su sistemi remoti come se fossero solo file archiviati localmente. Ma prima di condividere file e directory, installerai prima un server Ubuntu NFS. Su Ubuntu, installerai nfs-kernel-server
pacchetto sul nfs-server
macchina.
Alcuni comandi nel tutorial non hanno output. Ma un risultato dei passaggi accumulati che hai eseguito viene visualizzato nell'ultimo passaggio di ciascuna sezione.
1. Accedi al tuo server Linux ed esegui sudo su
comando seguente per ottenere i privilegi di root.
sudo su
2. Esegui i comandi seguenti su update
l'indice del pacchetto per il tuo repository e installa il pacchetto del server Ubuntu NFS (nfs-kernel-server
).
sudo apt update
sudo apt install nfs-kernel-server -y
3. Infine, esegui systemctl
comandi seguenti per avviare e abilitare il servizio NFS nfs-kernel-server
, quindi verifica il nfs-kernel-server
lo stato del servizio è attivo.
# start and enable NFS service
sudo systemctl enable --now nfs-kernel-server.service
# verify status NFS service
sudo systemctl status nfs-kernel-server.service
Come puoi vedere di seguito, attivo (chiuso) lo stato indica che il servizio NFS è in esecuzione. Gli usciti messaggio ti dice che systemd manager non riesce a trovare alcun demone da monitorare.
Configurazione della directory condivisa NFS
Dopo aver installato il pacchetto del server NFS, ora configurerai la directory condivisa NFS creando nuove directory. Condividerai queste directory con i clienti e aggiungerai nuove configurazioni a /etc/exports file.
1. Eseguire il comando seguente per creare una nuova directory condivisa NFS. In questo esempio, condividerai il /srv/data
directory e /srv/test
ai clienti.
sudo mkdir -p /srv/{data,test}
2. Quindi, esegui chown
comando seguente per modificare la proprietà della directory condivisa NFS /srv/data
e /srv/test
all'utente nobody
e gruppo nogroup
. Questo comando assicura che la directory condivisa NFS sia scrivibile dai client. sudo chown -R nobody:nogroup /srv/{data,test}
Questo comando assicura che la directory condivisa NFS sia scrivibile dai client.
sudo chown -R nobody:nogroup /srv/{data,test}
3. Modifica la configurazione NFS /etc/exports
utilizzando il tuo editor preferito e popola il file con la seguente configurazione.
La configurazione seguente consente alle macchine client di accedere alla directory condivisa NFS con l'accesso utente specificato in lettura e scrittura (rw
) o di sola lettura (ro
). Assicurati di modificare gli indirizzi IP (172.16.1.25
e 172.16.1.0/24
) con gli indirizzi IP delle macchine client.
# sync - forces NFS to write change from the shared directory to disk immediately.
# no_subtree_check - disabling the subtree checking to get more performance.
# rw - set read/write access to NFS shared directory for clients.
# share /srv/data to client 172.16.1.25 with read and write access.
/srv/data 172.16.1.25(rw,sync,no_subtree_check,root_squash)
# r0 - set read-only access to NFS shared directory for clients.
# share /srv/test to network 172.16.1.0/24 with read only access.
/srv/test 172.16.1.0/24(ro,sync,no_subtree_check)
4. Eseguire il comando seguente per applicare la directory condivisa e verificare il /etc/exports
file di configurazione. Se non ricevi alcun messaggio di output, la configurazione NFS è corretta.
sudo exportfs -a
5. Ora esegui il systemctl
comando seguente per riavviare il nfs-kernel-server
servizio.
sudo systemctl restart nfs-kernel-server
6. Infine, esegui showmount
comando seguente per elencare le directory condivise sul server Ubuntu NFS. Assicurati di modificare l'indirizzo IP (172.16.1.20
) con l'indirizzo IP del server NFS.
showmount --exports 172.16.1.20
Ora dovresti vedere l'elenco delle directory condivise sul server NFS con l'indirizzo IP che ti ha permesso di accedere al server Ubuntu NFS.
Protezione della directory condivisa NFS con UFW Firewall
Hai configurato la directory condivisa NFS, ma in genere vorresti impedire agli utenti casuali di accedere alla directory condivisa.
Assicurarsi che solo l'indirizzo IP consentito possa accedere alla directory condivisa. Come? Configurando il firewall UFW e specificando l'indirizzo IP sulla porta NFS.
1. Esegui i seguenti comandi per aprire la porta NFS (2049
) e consenti ai client sugli indirizzi IP 172.16.1.25
e 172.16.1.0/24
accesso al server Ubuntu NFS. Assicurati di sostituire l'indirizzo IP con l'indirizzo IP del tuo client.
# allow client IP 172.16.1.25 to access NFS server
sudo ufw allow from 172.16.1.25 to any port nfs
# allow network 172.16.1.0/24 to access NFS server
sudo ufw allow from 172.16.1.0/24 to any port nfs
2. Quindi, esegui ufw
comando seguente per ricaricare il firewall UFW e applicare una nuova configurazione.
sudo ufw reload
3. Infine, esegui ufw
comando seguente per verificare lo stato del firewall UFW.
sudo ufw status
Di seguito, puoi vedere che la porta del server NFS 2049 è aggiunta al firewall e accessibile solo dall'indirizzo IP del client 172.16.1.25 e dalla rete 172.16.1.0/24.
Montaggio della directory condivisa NFS sul computer client
A questo punto, hai completamente configurato il server Ubuntu NFS. Ma come possono le macchine client accedere alla directory condivisa NFS? Esecuzione di mount
il comando per accedere alla directory condivisa NFS farà il trucco. Ma prima installerai nfs-common
(per la distribuzione Debian Linux) o nfs-utils
(per RHEL, distribuzione CentOS) al computer client.
1. Accedi al tuo computer client, apri il terminale ed esegui sudo su
comando per ottenere i privilegi di root.
sudo su
2. Quindi, esegui uno dei comandi seguenti per installare i pacchetti NFS sul computer client, a seconda del tuo sistema operativo.
# for Ubuntu/Debian based distribution
sudo apt install nfs-common -y
# for RHEL/CentOS/Fedora Linux distribution
sudo dnf install nfs-utils -y
3. Eseguire il comando seguente per creare la directory di montaggio di destinazione. La directory condivisa NFS verrà montata sulla macchina client /data
e /test
directory in questo esempio.
mkdir -p /{data,test}
4. Esegui ogni mount
comandi seguenti per accedere alla directory condivisa NFS.
Il -t nfs
l'opzione specifica che il tipo di file system è il server NFS. Questo comando monta il /srv/data
directory condivisa sul server NFS di Ubuntu nella directory del client locale (/data
). E il /srv/test
directory condivisa nella directory locale del clic /test
.
# mount shared directory `/srv/data on the nfs server 172.16.1.20
# to the local client directory /data
sudo mount -t nfs 172.16.1.20:/srv/data /data
# mount shared directory `/srv/test on the nfs server 172.16.1.20
# to the local client directory /test
sudo mount -t nfs 172.16.1.20:/srv/test /test
5. Esegui il df
comando seguente per verificare l'elenco dei file system montati sulla macchina client.
sudo df -h
Nell'output di seguito, vedrai che la directory condivisa NFS /srv/data è montata nella directory /data sul computer client. Allo stesso tempo, la directory condivisa (/srv/test) viene montata nella directory locale (/test) sul computer client.
6. Quindi, esegui i comandi seguenti per passare alla directory di montaggio di destinazione (/data
) e crea un file chiamato file.txt
.
Dalla directory condivisa (
/srv/data
) ha i permessi di lettura e scrittura, puoi creare un nuovo file.
# navigate to /data directory
cd /data
# create a new file with "This file from client machine!" as content
echo "This file from client machine!" > file.txt
7. Esegui il ls
e cat
comandi seguenti per verificare che il file sia disponibile nella directory di montaggio /data
.
# list files on the current directory
ls -lah
# showing the content of the file.txt
cat file.txt
8. Infine, esegui ogni comando seguente per passare alla directory di montaggio (/test)
e crea un file chiamato file.txt
. Questo comando ti consente di testare le restrizioni di accesso in scrittura sul filesystem di sola lettura.
# navigate to /test directory
cd /test
# create new file
echo "Test create a file on Read-only filesystem" > file.txt
Come l'output di seguito, riceverai un messaggio di errore perché la directory condivisa (/srv/test) ha solo l'autorizzazione di sola lettura.
Montaggio permanente della directory condivisa NFS
Ora hai montato correttamente la directory condivisa NFS sul computer client, ma non sarà più dopo aver riavviato il sistema. Come montare la directory condivisa NFS in modo permanente? Definendo la directory condivisa NFS su /etc/fstab file.
1. Modifica /etc/fstab file di configurazione utilizzando il tuo editor preferito e aggiungi la configurazione seguente. Modificare l'indirizzo IP con l'indirizzo IP del server NFS, la directory condivisa e la directory di destinazione del montaggio.
# rw/ro - allow read and write or read-only to the target mount.
# hard - enable client machine to always try to connect to the NFS whenever fail.
# noexec - disable binary file execution on the file system.
# rsize - maximum READ requests that client machine can handle.
# wzise - maximum WRITE requests that client machine can handle.
# timeo - timeout for NFS client before retries requests to the NFS server.
# NFS Shared Directory - target - type - options - dump - pass
172.16.1.20:/srv/data /data nfs rw,hard,noexec,rsize=8192,wsize=8192,timeo=14 0 0
172.16.1.20:/srv/test /test nfs ro,hard,noexec,rsize=8192,wsize=8192,timeo=14 0 0
2. Quindi, esegui mount
comando seguente per montare tutto il filesystem su /etc/fstab
file e verifica il /etc/fstab
configurazione. Se non viene visualizzato alcun messaggio di errore, la configurazione è corretta.
sudo mount -a
3. Esegui il df
comando seguente per verificare il file system montato sulla macchina client.
sudo df -h
Simile all'output seguente, dovresti vedere che la directory condivisa NFS è montata automaticamente sul tuo computer client.
4. Infine, esegui reboot
comando per riavviare la macchina client. Una volta riavviato, accedi ed esegui nuovamente il df
comando come hai fatto nel passaggio tre per verificare la directory condivisa NFS.
sudo df -h
Come puoi vedere di seguito, la directory condivisa NFS è ancora montata in modo permanente sulla macchina client.
Conclusione
Durante questo tutorial, hai imparato come configurare un server NFS su un server Linux per condividere una directory in modo sicuro. Hai anche accennato al montaggio permanente della directory condivisa NFS, quindi non dovrai montare manualmente la directory condivisa ogni volta che riavvii la macchina.
A questo punto, hai un server NFS completamente funzionante. Allora, qual è il prossimo? Forse impari ad aggiungere un livello di sicurezza per NFS usando l'autenticazione Kerberos?