NFS Setup · 6 min read · Dec 26, 2025

Impostare un Server e un Client NFS su Debian 9 (Stretch)

Questa guida spiega come impostare un server NFS e un client NFS su Debian 9. NFS sta per Network File System; tramite NFS, un client può accedere (leggere, scrivere) a una condivisione remota su un server NFS come se fosse sul disco rigido locale. In questo tutorial, ti mostrerò due diverse esportazioni NFS, l’esportazione di una directory client che memorizza file come utente nobody/nogroup senza preservare le autorizzazioni del filesystem e un’esportazione della directory /var/www che preserva le autorizzazioni e la proprietà dei file, come richiesto in una configurazione di server di hosting.

1 Nota Preliminare

Sto utilizzando due sistemi Debian Wheezy qui:

  • Server NFS: server.example.com, indirizzo IP: 192.168.1.100
  • Client NFS: client.example.com, indirizzo IP: 192.168.1.101

2 Installazione di NFS

Assicurati che il server sia aggiornato aggiornando l’elenco dei pacchetti e installando gli aggiornamenti in sospeso su entrambi i server

apt-get update
apt-get upgrade

Poi continua con l’installazione del server e del client NFS.

server:

Sul server NFS eseguiamo:

apt-get install nfs-kernel-server nfs-common

Poi creiamo i collegamenti di avvio del sistema per il server NFS e lo avviamo:

client:

Sul client possiamo installare NFS come segue (questo è in realtà lo stesso che sul server):

apt-get install nfs-common

3 Esportare Directory sul Server

server:

Vorrei rendere le directory /home/client1 e /var/www accessibili al client per mostrare i due diversi modi di accesso del server NFS. La directory /home/client1 è condivisa in modalità standard, quindi tutti i file scritti in questa directory sono memorizzati come utente nobody e gruppo nogroup. Per la directory /var/www utilizzo l’opzione no_root_squash che istruisce il server NFS a preservare le autorizzazioni e la proprietà dei file. Questo è ad esempio richiesto quando si desidera esportare la directory /var/www di un server web gestito con ISPConfig 3.

Prima, creerò la directory /home/client1

mkdir /home/client1  
chown nobody:nogroup /home/client1  
chmod 755 /home/client1

La directory /var/www esiste molto probabilmente sul tuo server. Se non esiste, creala:

mkdir /var/www  
chown root:root /var/www  
chmod 755 /var/www

Ora dobbiamo modificare /etc/exports dove “esportiamo” le nostre condivisioni NFS. Specifichiamo /home/client1 e /var/www come condivisioni NFS e diciamo a NFS di effettuare accessi a /home/client1 come utente nobody (per saperne di più su /etc/exports, il suo formato e le opzioni disponibili, dai un’occhiata a

man 5 exports

)

nano /etc/exports
/home/client1           192.168.1.101(rw,sync,no_subtree_check)
/var/www        192.168.1.101(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash)

(L’opzione no_root_squash fa sì che /var/www venga accessibile come root.)

Per applicare le modifiche in /etc/exports, riavviamo il server nfs del kernel

service nfs-kernel-server restart

4 Montare le Condivisioni NFS sul Client

client:

Per prima cosa, creiamo le directory dove vogliamo montare le condivisioni NFS, ad esempio:

mkdir -p /mnt/nfs/home/client1  
mkdir -p /var/www

Se la directory /var/www esiste già sul tuo server, ferma apache, rinomina la directory e crea una nuova directory vuota come punto di montaggio

service apache2 stop  
mv /var/www /var/www_bak  
mkdir -p /var/www

Dopo, possiamo montarle come segue:

mount 192.168.1.100:/home/client1 /mnt/nfs/home/client1  
mount 192.168.1.100:/var/www /var/www

Dovresti ora vedere le due condivisioni NFS negli output di

df -h
root@server1:/tmp# df -h  
Filesystem Size Used Avail Use% Mounted on  
udev 990M 0 990M 0% /dev  
tmpfs 201M 6.0M 195M 3% /run  
/dev/sda1 28G 1.2G 25G 5% /  
tmpfs 1001M 0 1001M 0% /dev/shm  
tmpfs 5.0M 0 5.0M 0% /run/lock  
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup  
tmpfs 200M 0 200M 0% /run/user/1000  
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1  
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www  
root@server1:/tmp#

e

mount
root@server1:/tmp# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)  
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)  
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)  
mqueue on /dev/mqueue type mqueue (rw,relatime)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)  
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)  
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)  
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
root@server1:/#

5 Test

Sul client, ora puoi provare a creare file di test sulle condivisioni NFS:

client:

touch /mnt/nfs/home/client1/test.txt  
touch /var/www/test.txt

Ora vai sul server e controlla se puoi vedere entrambi i file di test:

server:

ls -l /home/client1/
root@server1:/tmp# ls -l /home/client1/  
total 0  
-rw-r--r-- 1 nobody nogroup 0 Nov 16 10:52 test.txt  
root@server1:/tmp#
ls -l /var/www
root@server1:/tmp# ls -l /var/www  
total 0  
-rw-r--r-- 1 root root 0 Nov 16 10:52 test.txt  
root@server1:/tmp#

(Nota per favore le diverse proprietà dei file di test: la condivisione NFS /home/client1 viene accessibile come nobody / nogroup ed è di proprietà di nobody / nogroup; la condivisione /var/www viene accessibile come root, quindi /var/www/test.txt è di proprietà dell’utente e del gruppo root.)

6 Montare le Condivisioni NFS all’Avvio

Invece di montare manualmente le condivisioni NFS sul client, puoi modificare /etc/fstab in modo che le condivisioni NFS vengano montate automaticamente quando il client si avvia.

client:

Apri /etc/fstab e aggiungi le seguenti righe:

nano /etc/fstab
[...]  
192.168.1.100:/home/client1  /mnt/nfs/home/client1   nfs      rw,sync,hard,intr  0     0  
192.168.1.100:/var/www  /var/www   nfs      rw,sync,hard,intr  0     0

Invece di rw,sync,hard,intr puoi utilizzare diverse opzioni di montaggio. Per saperne di più sulle opzioni disponibili, dai un’occhiata a

man nfs

Per testare se il tuo /etc/fstab modificato funziona, smonta le condivisioni ed esegui mount -a:

umount /mnt/nfs/home/client1  
umount /var/www  
mount -a

Dovresti ora vedere le due condivisioni NFS negli output di

df -h
root@server1:/# df -h  
Filesystem Size Used Avail Use% Mounted on  
udev 990M 0 990M 0% /dev  
tmpfs 201M 6.0M 195M 3% /run  
/dev/sda1 28G 1.2G 25G 5% /  
tmpfs 1001M 0 1001M 0% /dev/shm  
tmpfs 5.0M 0 5.0M 0% /run/lock  
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup  
tmpfs 200M 0 200M 0% /run/user/1000  
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1  
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www  
root@server1:/#

e

mount
root@server1:/# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)  
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)  
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)  
mqueue on /dev/mqueue type mqueue (rw,relatime)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)  
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)  
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)  
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
root@server1:/#

7 Crediti

Questo tutorial è basato sul tutorial del server NFS di Centos di Falko Timme.

8 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.