Network File System (NFS)
Geschikt voor: Versie: 14.04 LTS, 16.04 LTS
Linux kent het Network File System (NFS) voor het delen van mappen en bestanden over een netwerkverbinding.
- Ubuntu heeft geen grafische ondersteuning (meer) voor NFS. Het delen van mappen met NFS is wel in te stellen met terminalvensteropdrachten.
NFS kan standaard niet worden gebruikt met de Windows home versie.
De computer die de map(pen) deelt wordt server genoemd. De computer die de mappen via het netwerk gaat gebruiken noemen we de client.
Beveiliging
Dit artikel beschrijft de minimale stappen voor het opzetten van een eenvoudig NFS netwerk. De beveiliging van NFS zoals beschreven in dit artikel is slechts gebaseerd op het Linux gebruikersnummer (UID) en groepsnummer (GID). Er wordt niet gevraagd om een wachtwoord.
Merk op dat iemand via NFS eenvoudig kan "inbreken" door hetzelfde gebruikersnummer (UID en/of GID) te gebruiken. Gebruik dit artikel uitsluitend in een vertrouwde omgeving zoals een thuisnetwerk.
Kijk voor mogelijkheden voor aanvullende beveiliging en gebruikersbeheer in het Engelstalige artikel: SettingUpNFSHowTo.
Server
- De NFS server software kan worden geïnstalleerd met de terminalopdracht:
sudo apt-get install nfs-kernel-server
De map die gedeeld moet worden moet opgenomen worden in het bestand /etc/exports:
sudo nano /etc/exports
Voeg bijvoorbeeld de volgende regel toe om de persoonlijke mappen (/home) te delen:
/home *(rw,sync)
De optie 'rw' geeft toegang voor zowel lezen als schrijven. Met de optie 'ro' ("read-only") kan via NFS alleen gelezen worden. Kijk voor (veel) meer opties en (Engelstalige) uitleg in de man page: man exports.
Dit geeft toegang voor alle computers. Voor meer veiligheid kan in plaats van * een computernaam of ip-adres(reeks) worden opgegeven.
- Om bijvoorbeeld de toegang te beperken tot computers met een adres tussen 192.168.1.1 tot 192.168.1.255:
/home 192.168.1.0/24(rw,sync)
- en/of
Voeg bijvoorbeeld de volgende regel toe om een gekoppelde schijf (/media/schijfnaam) te delen:
/media/schijfnaam *(rw,sync)
- Start de server met de opdracht:
sudo /etc/init.d/nfs-kernel-server start
Een wijziging van gedeelde mappen in /etc/exports kan worden geactiveerd met de opdracht:
sudo exportfs -ra
- De Windows NFS server valt buiten bereik van dit artikel
Client
Ubuntu
- De software voor de Ubuntu client kan worden geïnstalleerd met de terminalopdracht:
sudo apt-get install nfs-common
Gebruik
- Op de client computer kan nu de NFS map gekoppeld worden. Maak hiervoor een map, bijvoorbeeld:
sudo mkdir /media/nfsserver
- Koppel deze map aan de map op de NFS server met de opdracht:
sudo mount -o v3 192.168.1.2:/home /media/nfsserver
Vervang het voorbeeld adres 192.168.1.2 door het ip-adres of dns-naam van de server computer.
De optie -o v3 is nodig voor Ubuntu 20.04
Of, in het voorbeeld van een gedeelde schijf:
sudo mount 192.168.1.2:/media/schijfnaam /media/nfsserver
. Om de map automatisch te koppelen bij het starten van de computer kan een regel worden opgenomen in /etc/fstab:
192.168.1.2:/home /media/nfsserver nfs rsize=8192,wsize=8192,timeo=14,intr
Vervang het voorbeeld adres 192.168.1.2 door het ip-adres of dns-naam van de server computer.
Kijk eventueel ook in het artikel over /etc/fstab.
Of, de regel in fstab in het voorbeeld van de gedeelde schijf:
192.168.1.2:/media/schijfnaam /media/nfsserver nfs rsize=8192,wsize=8192,timeo=14,intr
Windows
In bepaalde versies van Windows (bijvoorbeeld Windows 10 Pro) is de NFS client een optioneel onderdeel.
Druk op de Windows-toets en tik in Windows-onderdelen
Vink Client voor NFS aan en druk op OK
Verkenner
Met NFS gedeelde mappen kunnen eenvoudig worden gekoppeld via Verkenner → Netwerk. Klik met de rechter muisknop op een gedeelde map om deze te openen of te koppelen aan een schijfletter.
Windows opdrachtpromt
Met NFS gedeelde mappen kunnen ook via een Windows opdrachtpromt worden gekoppeld.
Druk op de Windows-toets en tik in cmd om een opdrachtprompt te openen. Er zijn hiervoor geen speciale (administrator) rechten nodig.
mount
Gebruik de mount opdracht om een met NFS gedeelde map te koppelen.
In het voorbeeld met een gedeelde schijf:
mount 192.168.178.2:\media/schijfnaam X:
Vervang het voorbeeld adres 192.168.1.2 door het ip-adres of dns-naam van de server computer.
Gebruik in plaats van een letter (X in dit voorbeeld) * om automatisch de eerstvolgende vrij schijfletter te gebruiken.
Als de verkeerde naam wordt gebruikt, dus niet de naam die op de server in /etc/exports is opgegeven komt de foutmelding Network Error - 53
umount
Gebruik de umount opdracht om een met NFS gedeelde map te ontkoppelen.
In het voorbeeld hierboven, waar X als schijfletter is gebruikt:
umount X:
- Als de gedeelde map nog in gebruik is komt er de foutmelding:
There are open files and/or incomplete directory searches pending on the connection. Do you want to continue this operation? (Y/N) [N]:
- Antwoord "N" en sluit eerst alle vensters die gebruik maken van de met NFS gedeelde map normaal te kunnen ontkoppelen
- Of antwoord "Y" om de gedeelde map geforceerd te sluiten met mogelijk gevolgen voor programma's die gebruik maken van de gedeelde map
Rechten
In de Windows verkenner kan via de rechter muisknop → Eigenschappen → NFS-kenmerken rechten worden ingesteld.
Gebruiker
De Windows NFS client gebruikt standaard een anoniem account (nobody of UID -2)
Met een aanpassing van het Windows register (regedit) kan de Windows NFS client worden gekoppeld aan de UID en GID van een (één) Ubuntu gebruikersnaam.
Ubuntu gebruikt voor de 1e (hoofd-) gebruikers UID=1000 en GID=1000.
Bepaal eventueel de nummers van een andere Ubuntu gebruikt met de opdracht id <gebruikersnaam>
Voeg 2 nieuwe registerwaarde toe aan HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default:
"AnonymousGid"=dword:000003e8 (1000)
"AnonymousUid"=dword:000003e8 (1000)
- Complexe scenario's om (verschillende) Windows gebruikers te koppelen aan (verschillende) Ubuntu gebruikers vallen buiten bereik van dit artikel.
Meer informatie
BestandsServer met Samba in plaats van NFS
Engelstalig: