Linux

Een NFS-server installeren en configureren op Ubuntu 20.04

Een NFS-server installeren en configureren op Ubuntu 20.04

NFS of Network File System is een gedistribueerd bestandssysteemprotocol waarmee u mappen via een netwerk kunt delen. Met NFS kunt u externe mappen op uw systeem aankoppelen en met de bestanden op de externe computer werken alsof het lokale bestanden zijn.

Het NFS-protocol is standaard niet gecodeerd en biedt geen gebruikersauthenticatie. Toegang tot de server wordt beperkt door de IP-adressen of hostnamen van de client.

In dit artikel wordt uitgelegd hoe u een NFSv4-server instelt op Ubuntu 20.04. We laten u ook zien hoe u een NFS-bestandssysteem op de clientcomputer kunt mounten.

Vereisten #

We gebruiken twee machines, een met Ubuntu 20.04, die zal fungeren als een NFS-server, en een andere met een andere Linux-distributie waarop we de share zullen mounten. De server en de clients moeten met elkaar kunnen communiceren via een particulier netwerk. U kunt openbare IP-adressen gebruiken en de serverfirewall configureren om verkeer op poort toe te staan 2049 alleen van vertrouwde bronnen.

De machines in dit voorbeeld hebben de volgende IP's:

NFS-server-IP: 192.168.33.10 NFS-clients IP's: vanaf de 192.168.33.0/24 bereik 

De NFS-server instellen #

De eerste stap is het instellen van de NFS-server. We zullen de benodigde pakketten installeren, de NFS-directory's maken en exporteren en de firewall configureren.

De NFS-server installeren #

Het NFS-serverpakket biedt ondersteuning voor gebruikersruimte die nodig is om de NFS-kernelserver uit te voeren. Om het pakket te installeren, voer je uit:

sudo apt updatesudo apt install nfs-kernel-server

Zodra de installatie is voltooid, starten de NFS-services automatisch.

Op Ubuntu 20.04, NFS versie 2 is uitgeschakeld. Versies 3 en 4 zijn ingeschakeld. U kunt dat verifiëren door het volgende uit te voeren: kat commando:

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2 

NFSv2 is nu behoorlijk oud en er is geen reden om het in te schakelen.

NFS-serverconfiguratie is gedefinieerd in /etc/default/nfs-kernel-server en /etc/default/nfs-common bestanden. De standaardinstellingen zijn voldoende voor de meeste situaties.

De bestandssystemen maken #

De NFSv4-server gebruikt een globale hoofdmap en de geëxporteerde mappen zijn relatief aan deze map. U kunt het koppelingspunt voor delen koppelen aan de mappen die u wilt exporteren met behulp van bindkoppelingen.

In dit voorbeeld stellen we de /srv/nfs4 map als NFS-root. Om beter uit te leggen hoe de NFS-mounts kunnen worden geconfigureerd, gaan we twee mappen delen (/var/www en /opt/back-ups) met verschillende configuratie-instellingen. De /var/www/ is eigendom van de gebruiker www-gegevens, en /opt/back-ups is eigendom van wortel.

Maak eerst de hoofdmap en de koppelpunten van de share aan:

sudo mkdir -p /srv/nfs4/back-upssudo mkdir -p /srv/nfs4/www

Koppel de mappen aan de koppelpunten van de share:

sudo mount --bind /opt/backups /srv/nfs4/backupssudo mount --bind /var/www /srv/nfs4/www

Om de bind-mounts permanent te maken bij opnieuw opstarten, opent u de /etc/fstab het dossier:

sudo nano /etc/fstab

en voeg de volgende regels toe:

/etc/fstab
/opt/backups /srv/nfs4/backups geen binding 0 0 /var/www /srv/nfs4/www geen binding 0 0 

De bestandssystemen exporteren #

De volgende stap is het toevoegen van de bestandssystemen die zullen worden geëxporteerd en de clients die toegang hebben tot die shares aan de /etc/exports het dossier.

Elke regel voor een geëxporteerd bestandssysteem heeft de volgende vorm:

export host(opties) 

Waar exporteren is de geëxporteerde map, gastheer een hostnaam of IP-adres/bereik is dat toegang heeft tot de export, en opties zijn de hostopties.

Open de /etc/exports bestand en voeg de volgende regels toe:

sudo nano /etc/exports
/etc/exports
/srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0) /srv/nfs4/back-ups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check) /srv/nfs4/www 192.168.33.20(rw,sync,no_subtree_check) 

De eerste regel bevat de fsid=0 optie, die de NFS-hoofdmap definieert (/srv/nfs4). Toegang tot dit NFS-volume is alleen toegestaan ​​voor de clients van de 192.168.33.0/24 subnet. De oversteken optie is vereist om mappen te delen die submappen zijn van een geëxporteerde map.

De tweede regel laat zien hoe u meerdere exportregels voor één bestandssysteem kunt specificeren. De leestoegang is toegestaan ​​voor het geheel 192.168.33.0/24 bereik, en zowel lees- als schrijftoegang tot de 192.168.33.3 IP adres. De synchroniseren optie vertelt NFS om wijzigingen naar de schijf te schrijven voordat het antwoordt.

De laatste regel spreekt voor zich. Voor meer informatie over alle beschikbare opties type man export in uw terminal.

Sla het bestand op en exporteer de shares:

sudo exportfs -ar

U moet de bovenstaande opdracht uitvoeren elke keer dat u de wijzigt /etc/exports het dossier. Als er fouten of waarschuwingen zijn, worden deze weergegeven op de terminal.

Om de huidige actieve exports en hun status te bekijken, gebruikt u:

sudo exportfs -v

De uitvoer bevat alle aandelen met hun opties. Zoals je kunt zien zijn er ook opties die we niet hebben gedefinieerd in de /etc/exports het dossier. Dat zijn standaardopties en als je ze wilt wijzigen, moet je die opties expliciet instellen.

/srv/nfs4/back-ups 192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/www 192.168.33.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4 192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/backups 192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash) 

op Ubuntu, root_squash is standaard ingeschakeld. Dit is een van de belangrijkste opties met betrekking tot NFS-beveiliging. Het voorkomt dat rootgebruikers die verbonden zijn vanaf de clients rootrechten hebben op de gekoppelde shares door root toe te wijzen UID en GID naar niemand/geen groep UID/GID.

Om ervoor te zorgen dat de gebruikers op de clientcomputers toegang hebben, verwacht NFS dat de gebruikers- en groeps-ID's van de client overeenkomen met die op de server. Een andere optie is om de NFSv4 idmapping-functie te gebruiken die gebruikers- en groeps-ID's vertaalt naar namen en andersom.

Dat is het. Op dit moment heb je een NFS-server opgezet op je Ubuntu-server. U kunt nu naar de volgende stap gaan en de clients configureren en verbinding maken met de NFS-server.

Firewall-configuratie #

Als je Jenkins installeert op een externe Ubuntu-server die wordt beschermd door een firewall, moet je verkeer op de NFS-poort inschakelen:

sudo ufw toestaan ​​vanaf 192.168.33.0/24 naar elke poort nfs

Controleer de wijziging:

sudo ufw-status

De uitvoer moet laten zien dat het verkeer op poort 2049 is toegestaan:

Tot actie van -- ------ ---- 2049 TOESTAAN 192.168.33.0/24 22/tcp Overal TOESTAAN 22/tcp (v6) Overal TOESTAAN (v6) 

De NFS-clients instellen #

Nu de NFS-server is ingesteld en shares zijn geëxporteerd, is de volgende stap het configureren van de clients en het koppelen van de externe bestandssystemen.

We concentreren ons op Linux-systemen, maar je kunt de NFS-share ook koppelen aan macOS- en Windows-machines.

De NFS-client installeren #

Op de clientcomputers hoeven we alleen de tools te installeren die nodig zijn om een ​​extern NFS-bestandssysteem te mounten.

Bestandssystemen aankoppelen #

We werken op de clientcomputer met IP 192.168.33.20, die lees- en schrijftoegang heeft tot de /srv/nfs4/www bestandssysteem en alleen-lezen toegang tot de /srv/nfs4/back-ups bestandssysteem.

Maak twee nieuwe mappen voor de koppelpunten:

sudo mkdir -p /back-upssudo mkdir -p /srv/www

U kunt de mappen op elke gewenste locatie maken.

Koppel de geëxporteerde bestandssystemen met de monteren opdracht:

sudo mount -t nfs -o vers=4 192.168.33.10:/back-ups /back-upssudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Waar 192.168.33.10 is het IP-adres van de NFS-server. U kunt ook de hostnaam gebruiken in plaats van het IP-adres, maar deze moet door de clientcomputer kunnen worden opgelost. Dit wordt meestal gedaan door de hostnaam toe te wijzen aan het IP in de /etc/hosts het dossier.

Laat bij het mounten van een NFSv4-bestandssysteem de NFS-hoofdmap weg. Gebruik /back-ups, in plaats van /srv/nfs4/back-ups.

Controleer of de externe bestandssystemen succesvol zijn gemount met behulp van de mount of df opdracht:

df -h

De opdracht drukt alle gekoppelde bestandssystemen af. De laatste twee regels zijn de gemonteerde aandelen:

Bestandssysteem Grootte Gebruikt Beschikbaar Gebruik% Gekoppeld op udev 951M 0 951M 0% /dev tmpfs 199M 676K 199M 1% /run /dev/sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/sda1 456M 197M 226M 47% /boot tmpfs 199M 0 199M 0% /run/user/1000 192.168.33.10:/back-ups 124G 2.8G 115G 3% /back-ups 192.168.33.10:/www 124G 2.8G 115G 3% /srv/www

Om de mounts permanent te maken bij het opnieuw opstarten, opent u de /etc/fstab bestand en voeg de volgende regels toe:

sudo nano /etc/fstab
/etc/fstab
192.168.33.10:/backups /backups nfs standaardwaarden,timeo=900,retrans=5,_netdev 0 0 192.168.33.10:/www /srv/www nfs standaardwaarden,timeo=900,retrans=5,_netdev 0 0 

Voor informatie over de beschikbare opties bij het aankoppelen van een NFS-bestandssysteem, typt u man nfs in uw terminal.

Een andere optie om externe bestandssystemen te mounten is om ofwel de autofs tool of om een ​​systemd-eenheid te maken.

NFS-toegang testen #

Laten we de toegang tot de shares testen door op elk ervan een nieuw bestand te maken.

Probeer eerst een testbestand te maken naar de /back-ups map met behulp van de aanraken opdracht:

sudo touch /back-ups/test.tekst

De /back-up bestandssysteem wordt geëxporteerd als alleen-lezen en zoals verwacht ziet u een Geen toestemming foutmelding:

touch: kan '/backups/test' niet aanraken: toestemming geweigerd 

Probeer vervolgens een testbestand te maken naar de /srv/www directory als root met behulp van de sudo opdracht:

sudo touch /srv/www/test.tekst

Nogmaals, je zult zien Geen toestemming bericht.

touch: kan '/srv/www' niet aanraken: toestemming geweigerd 

Als je je herinnert, de /var/www directory is eigendom van de www-gegevens gebruiker, en deze share heeft root_squash optieset die de rootgebruiker toewijst aan de niemand gebruiker en geen groep groep die geen schrijfrechten heeft voor de externe share.

Ervan uitgaande dat je een www-gegevens gebruik op de clientcomputer met dezelfde UID en GID zoals op de externe server (wat het geval zou moeten zijn als u bijvoorbeeld nginx op beide machines hebt geïnstalleerd), kunt u proberen een bestand als gebruiker aan te maken www-gegevens:

sudo -u www-data touch /srv/www/test.tekst

De opdracht toont geen uitvoer, wat betekent dat het bestand met succes is gemaakt.

Om het te verifiëren, vermeldt u de bestanden in de /srv/www map:

ls -la /srv/www

De uitvoer zou het nieuw gemaakte bestand moeten tonen:

drwxr-xr-x 3 www-data www-data 4096 10 april 22:18 . drwxr-xr-x 3 wortel wortel 4096 10 april 22:29… -rw-r--r-- 1 www-data www-data 0 10 april 21:58 index.html -rw-r--r-- 1 www-data www-data 0 10 april 22:18 test.tekst 

NFS-bestandssysteem ontkoppelen #

Als de externe NFS-share niet langer nodig is, kunt u deze ontkoppelen zoals elk ander aangekoppeld bestandssysteem met behulp van de umount opdracht.

Om bijvoorbeeld de . te ontkoppelen /back-up delen, zou je uitvoeren:

sudo umount /back-ups

Als het koppelpunt is gedefinieerd in de /etc/fstab bestand, zorg ervoor dat u de regel verwijdert of commentaar geeft door toe te voegen # aan het begin van de regel.

Conclusie #

We hebben u laten zien hoe u een NFS-server instelt en hoe u de externe bestandssystemen op de clientcomputers kunt mounten. Als u NFS in productie implementeert en verstandige gegevens deelt, is het een goed idee om kerberos-authenticatie in te schakelen.

Als alternatief voor NFS kunt u SSHFS gebruiken om externe mappen via een SSH-verbinding te mounten. SSHFS is standaard versleuteld en veel gemakkelijker te configureren en te gebruiken.

Laat gerust een reactie achter als je vragen hebt.

Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...
Wijs uw muisknoppen anders toe voor verschillende software met X-Mouse Button Control
Misschien heeft u een tool nodig waarmee u de bediening van uw muis kunt veranderen bij elke applicatie die u gebruikt. Als dit het geval is, kunt u e...
Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...