Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Projekt: Raspberry PI als Backupserver
In diesem Projekt bauen wir aus einem Raspberry Pi einen einfachen, aber sauberen NFS-Backupserver für ein lokales Netzwerk. Ziel ist es, eine klare Trennung zwischen einem öffentlichen, nur lesbaren Bereich und einem schreibbaren Datenbereich umzusetzen. Dabei wird bewusst kein Benutzerabgleich zwischen Client und Server verwendet. Stattdessen werden alle schreibenden Zugriffe serverseitig auf einen definierten Service-User abgebildet. Dadurch bleibt die Konfiguration auf den Clients einfach und konsistent.
Konzept
Der Server stellt zwei Verzeichnisse bereit:
- /
srv/nfs/public→ nur lesend (ro) /srv/nfs/data→ lesend + schreibend (rw, Service-User 2000)
Für das Datenverzeichnis wird ein technischer Service-User mit der UID/GID 2000 eingerichtet.
Alle Schreibzugriffe werden mittels all_squash auf diesen Benutzer umgeleitet. Dadurch gehören sämtliche erzeugten Dateien immer demselben Systemkonto – unabhängig davon, welcher Client sie erstellt hat.
Dieses Modell verhindert UID-Konflikte zwischen unterschiedlichen Systemen im Netzwerk.
Alle schreibenden Zugriffe auf /srv/nfs/data werden serverseitig
auf UID/GID 2000 abgebildet (all_squash).
NFS SERVER
sudo apt update sudo apt install -y nfs-kernel-server # Service-User für schreibendes Share sudo groupadd -g 2000 nfsdata sudo useradd -u 2000 -g 2000 -M -r nfsdata # Verzeichnisse anlegen sudo mkdir -p /srv/nfs/public sudo mkdir -p /srv/nfs/data # Rechte setzen sudo chown -R root:root /srv/nfs/public sudo chmod -R 755 /srv/nfs/public sudo chown -R 2000:2000 /srv/nfs/data sudo chmod -R 2775 /srv/nfs/data # ================================ # /etc/exports # ================================ /srv/nfs/public IP/24(ro,sync,no_subtree_check,root_squash) /srv/nfs/data IP/24(rw,sync,no_subtree_check,all_squash,root_squash,anonuid=2000,anongid=2000) # anwenden sudo exportfs -ra sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server # prüfen sudo exportfs -v
NFS CLIENT
Verfügbare Exports anzeigen
sudo apt install -y nfs-common showmount -e IP
Manuell Mounten
sudo mkdir -p /mnt/public sudo mkdir -p /mnt/data sudo mount -t nfs -o ro IP:/srv/nfs/public /mnt/public sudo mount -t nfs -o rw,soft,timeo=50,retrans=3 IP:/srv/nfs/data /mnt/data
Automatisch Mounten (/etc/fstab)
IP:/srv/nfs/public /mnt/public nfs ro,_netdev,noatime,x-systemd.automount,nofail 0 0 IP:/srv/nfs/data /mnt/data nfs rw,_netdev,noatime,x-systemd.automount,x-systemd.device-timeout=10s,x-systemd.idle-timeout=600,soft,timeo=50,retrans=3,nofail 0 0 sudo systemctl daemon-reload sudo mount -a
Ergebnis
- /srv/nfs/public → nur lesbar für alle Clients
- /srv/nfs/data → schreibbar, serverseitig UID/GID 2000
- Client bootet auch wenn Server offline ist
- Mount erfolgt erst bei Zugriff (automount)
- Keine UID-Anpassung auf Clients erforderlich
