NFS Server · 6 min read · Dec 26, 2025

Einrichten eines NFS-Servers und -Clients auf Debian 9 (Stretch)

Diese Anleitung erklärt, wie man einen NFS-Server und einen NFS-Client auf Debian 9 einrichtet. NFS steht für Network File System; über NFS kann ein Client auf einen Remote-Share auf einem NFS-Server zugreifen (lesen, schreiben), als ob er sich auf der lokalen Festplatte befände. In diesem Tutorial zeige ich Ihnen zwei verschiedene NFS-Exporte, den Export eines Client-Verzeichnisses, das Dateien als Benutzer nobody/nogroup speichert, ohne die Dateisystemberechtigungen zu erhalten, und einen Export des Verzeichnisses /var/www, das die Berechtigungen und den Besitz von Dateien beibehält, wie es bei einer Hosting-Server-Konfiguration erforderlich ist.

1 Vorbemerkung

Ich verwende hier zwei Debian Wheezy-Systeme:

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

2 Installation von NFS

Stellen Sie sicher, dass der Server auf dem neuesten Stand ist, indem Sie die Paketlisten aktualisieren und ausstehende Updates auf beiden Servern installieren

apt-get update
apt-get upgrade

Fahren Sie dann mit der Installation des NFS-Servers und -Clients fort.

server:

Auf dem NFS-Server führen wir aus:

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

Dann erstellen wir die Systemstartlinks für den NFS-Server und starten ihn:

client:

Auf dem Client können wir NFS wie folgt installieren (das ist tatsächlich dasselbe wie auf dem Server):

apt-get install nfs-common

3 Exportieren von Verzeichnissen auf dem Server

server:

Ich möchte die Verzeichnisse /home/client1 und /var/www für den Client zugänglich machen, um die beiden verschiedenen Zugriffsmodi des NFS-Servers zu zeigen. Das Verzeichnis /home/client1 wird im Standardmodus freigegeben, sodass alle in dieses Verzeichnis geschriebenen Dateien als Benutzer nobody und Gruppe nogroup gespeichert werden. Für das Verzeichnis /var/www verwende ich die Option no_root_squash, die den NFS-Server anweist, die Berechtigungen und den Besitz der Dateien beizubehalten. Dies ist z.B. erforderlich, wenn Sie das Verzeichnis /var/www eines Webservers exportieren möchten, der mit ISPConfig 3 verwaltet wird.

Zuerst erstelle ich das Verzeichnis /home/client1

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

Das Verzeichnis /var/www existiert höchstwahrscheinlich bereits auf Ihrem Server. Wenn nicht, erstellen Sie es:

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

Jetzt müssen wir /etc/exports ändern, wo wir unsere NFS-Shares “exportieren”. Wir geben /home/client1 und /var/www als NFS-Shares an und sagen NFS, dass Zugriffe auf /home/client1 als Benutzer nobody erfolgen sollen (um mehr über /etc/exports, sein Format und verfügbare Optionen zu erfahren, werfen Sie einen Blick auf

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)

(Die Option no_root_squash bewirkt, dass /var/www als root zugegriffen wird.)

Um die Änderungen in /etc/exports anzuwenden, starten wir den Kernel-NFS-Server neu

service nfs-kernel-server restart

4 Einbinden der NFS-Shares auf dem Client

client:

Zuerst erstellen wir die Verzeichnisse, in denen wir die NFS-Shares einbinden möchten, z.B.:

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

Wenn das Verzeichnis /var/www bereits auf Ihrem Server existiert, stoppen Sie Apache, benennen Sie das Verzeichnis um und erstellen Sie ein neues leeres Verzeichnis als Einhängepunkt

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

Anschließend können wir sie wie folgt einbinden:

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

Sie sollten jetzt die beiden NFS-Shares in den Ausgaben von

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#

und

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)  
odev 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:/tmp#

5 Testen

Auf dem Client können Sie jetzt versuchen, Testdateien auf den NFS-Shares zu erstellen:

client:

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

Gehen Sie jetzt zum Server und überprüfen Sie, ob Sie beide Testdateien sehen können:

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#

(Bitte beachten Sie die unterschiedlichen Besitzverhältnisse der Testdateien: Der NFS-Share /home/client1 wird als nobody/nogroup zugegriffen und gehört nobody/nogroup; der Share /var/www wird als root zugegriffen, daher gehört /var/www/test.txt dem Benutzer und der Gruppe root.)

6 Einbinden von NFS-Shares beim Booten

Anstatt die NFS-Shares manuell auf dem Client einzubinden, könnten Sie /etc/fstab ändern, sodass die NFS-Shares automatisch beim Booten des Clients eingebunden werden.

client:

Öffnen Sie /etc/fstab und fügen Sie die folgenden Zeilen hinzu:

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

Anstelle von rw,sync,hard,intr können Sie andere Einhängeoptionen verwenden. Um mehr über verfügbare Optionen zu erfahren, werfen Sie einen Blick auf

man nfs

Um zu testen, ob Ihre modifizierte /etc/fstab funktioniert, binden Sie die Shares aus und führen Sie mount -a aus:

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

Sie sollten jetzt die beiden NFS-Shares in den Ausgaben von

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:/#

und

mount
root@server1:/# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
odev 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 Credits

Dieses Tutorial basiert auf dem Centos NFS Server Tutorial von Falko Timme.

8 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.