Android

Hoe een nfs-server op ubuntu 18.04 te installeren en configureren

How to configure Netwok file Sharing Server (NFS Server) in Ubuntu Linux 18.04

How to configure Netwok file Sharing Server (NFS Server) in Ubuntu Linux 18.04

Inhoudsopgave:

Anonim

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

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

In deze zelfstudie bespreken we hoe u een NFSv4-server instelt op Ubuntu 18.04. We laten u ook zien hoe u een NFS-bestandssysteem op de client kunt mounten.

voorwaarden

In dit voorbeeld wordt ervan uitgegaan dat u een server met Ubuntu 18.04 en een andere met een andere Linux-distributie hebt. De server en de clients moeten via een privénetwerk met elkaar kunnen communiceren. Als uw hostingprovider geen privé-IP-adressen aanbiedt, kunt u de openbare IP-adressen gebruiken en de serverfirewall configureren om verkeer op poort 2049 alleen van vertrouwde bronnen toe te staan.

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

NFS Server IP: 192.168.33.10 NFS Clients IPs: From the 192.168.33.0/24 range

Stel de NFS-server in

We beginnen met het installeren en configureren van de NFS-server.

De NFS-server installeren

Vernieuw de pakkettenindex en installeer het NFS-serverpakket:

sudo apt update sudo apt install nfs-kernel-server

Nadat de installatie is voltooid, worden de NFS-services automatisch gestart.

Standaard is op Ubuntu 18.04 NFS versie 2 uitgeschakeld. Versies 3 en 4 zijn ingeschakeld. U kunt dit verifiëren door het volgende cat commando uit te voeren:

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-opties worden ingesteld in /etc/default/nfs-kernel-server en /etc/default/nfs-common bestanden. De standaardinstellingen zijn in ons geval voldoende.

Het maken van de bestandssystemen

Bij het configureren van een NFSv4-server is het een goede gewoonte om een ​​algemene NFS-rootmap te gebruiken en de eigenlijke mappen te koppelen aan het gedeelde koppelpunt. In dit voorbeeld gebruiken we de directeur /srv/nfs4 als NFS-root.

We gaan twee mappen delen ( /var/www en /opt/backups ), met verschillende configuratie-instellingen, om beter uit te leggen hoe de NFS-koppelingen kunnen worden geconfigureerd.

De /var/www/ is eigendom van de gebruiker en de groep www-data en /opt/backups is eigendom van root .

Maak het exportbestandssysteem met de opdracht mkdir :

sudo mkdir -p /srv/nfs4/backups sudo mkdir -p /srv/nfs4/www

Mount de eigenlijke mappen:

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

Om de bindmounts permanent te maken, opent u het bestand /etc/fstab :

sudo nano /etc/fstab

en voeg de volgende regels toe:

/ Etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Export van de bestandssystemen

De volgende stap is het definiëren van de bestandssystemen die door de NFS-server worden geëxporteerd, de opties voor delen en de clients die toegang hebben tot die bestandssystemen. Open hiervoor het bestand /etc/exports :

sudo nano /etc/exports Het bestand /etc/exports bevat ook opmerkingen die beschrijven hoe een map kan worden geëxporteerd.

In ons geval moeten we de www en backups exporteren en alleen toegang toestaan ​​van clients op het 192.168.33.0/24 :

/ Etc / exports

/srv/nfs4 192.168.33.0/24(rw, sync, no_subtree_check, crossmnt, fsid=0) /srv/nfs4/backups 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.110(rw, sync, no_subtree_check)

De eerste regel bevat fsid=0 die de NFS-rootmap /srv/nfs definieert. De toegang tot dit NFS-volume is alleen toegestaan ​​voor de clients van het 192.168.33.0/24 subnet. De optie crossmnt is vereist om mappen te delen die submappen zijn van een geëxporteerde map.

In de tweede regel wordt getoond hoe u meerdere exportregels voor één bestandssysteem kunt opgeven. Het exporteert de map /srv/nfs4/backups en geeft alleen leestoegang tot het hele 192.168.33.0/24 bereik en zowel lees- als schrijftoegang tot 192.168.33.3 . De sync vertelt NFS om wijzigingen naar schijf te schrijven voordat deze antwoordt.

De laatste regel moet voor zichzelf spreken. Voor meer informatie over alle beschikbare opties typt u man exports in uw terminal.

Sla het bestand op en exporteer de shares:

sudo exportfs -ra

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

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

sudo exportfs -v

De output omvat alle aandelen met hun opties. Zoals je kunt zien, zijn er ook opties die we niet hebben gedefinieerd in het bestand /etc/exports . Dit zijn standaardopties en als u ze wilt wijzigen, moet u die opties expliciet instellen.

/srv/nfs4/backups 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.110(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 is root_squash standaard ingeschakeld. Dit is een van de belangrijkste opties met betrekking tot NFS-beveiliging. Het voorkomt dat rootgebruikers verbonden met de clients rootrechten hebben op de gemounte shares. Het zal root UID en GID toewijzen aan nobody / nogroup UID / GID .

Opdat 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 omgekeerd.

Dat is het. Op dit moment hebt u een NFS-server op uw Ubuntu-server ingesteld. U kunt nu naar de volgende stap gaan en de clients configureren en verbinding maken met de NFS-server.

Firewall configuratie

Ervan uitgaande dat u UFW gebruikt om uw firewall te beheren om toegang toe te staan ​​vanuit het 192.168.33.0/24 subnet, moet u de volgende opdracht uitvoeren:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Om de wijzigingsrun te verifiëren:

sudo ufw status

Uit de output moet blijken dat het verkeer op poort 2049 is toegestaan:

To Action From -- ------ ---- 2049 ALLOW 192.168.33.0/24 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6)

Stel de NFS-clients in

Nu de NFS-server is ingesteld en shares worden geëxporteerd, configureert u de volgende stap de clients en koppelt u de externe bestandssystemen aan.

Je kunt ook de NFS-share op macOS- en Windows-machines mounten, maar we zullen ons richten op Linux-systemen.

De NFS-client installeren

Op de clientcomputers moeten we alleen de tools installeren die nodig zijn om externe NFS-bestandssystemen te mounten.

  • NFS-client installeren op Debian en Ubuntu

    De naam van het pakket met programma's voor het koppelen van NFS-bestandssystemen op op Debian gebaseerde distributies is nfs-common . Om het te installeren, voer uit:

    sudo apt update sudo apt install nfs-common

    Installeer NFS client op CentOS en Fedora

    Installeer op Red Hat en zijn afgeleiden het nfs-utils pakket:

    sudo yum install nfs-utils

Mounten van bestandssystemen

We werken op de clientcomputer met IP 192.168.33.110 die lees- en schrijftoegang heeft tot het /srv/nfs4/www bestandssysteem en alleen-lezen toegang heeft tot het /srv/nfs4/backups bestandssysteem.

Maak twee nieuwe mappen voor de koppelpunten. U kunt deze mappen op elke gewenste locatie maken.

sudo mkdir -p /backups sudo mkdir -p /srv/www

Koppel de geëxporteerde bestandssystemen met de opdracht mount :

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Waar 192.168.33.10 het IP-adres van de NFS-server is. 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-adres in het bestand /etc/hosts .

Bij het koppelen van een NFSv4-bestandssysteem moet u de NFS-rootmap weglaten, dus in plaats van /srv/nfs4/backups moet u /backups .

Controleer of de externe bestandssystemen met succes zijn gekoppeld met de opdracht mount of df :

df -h

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

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% / devtmpfs 236M 0 236M 0% /dev tmpfs 244M 0 244M 0% /dev/shm tmpfs 244M 4.5M 240M 2% /run tmpfs 244M 0 244M 0% /sys/fs/cgroup /dev/sda2 1014M 87M 928M 9% /boot tmpfs 49M 0 49M 0% /run/user/1000 192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www

Om de mounts permanent opnieuw op te starten, opent u het bestand /etc/fstab :

sudo nano /etc/fstab

en voeg de volgende regels toe:

/ Etc / fstab

192.168.33.10:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.10:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

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

Een andere optie om de externe bestandssystemen te mounten is om ofwel de autofs tool te gebruiken of om een ​​systeemeenheid te creëren.

NFS-toegang testen

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

Probeer eerst een testbestand in de map /backups met de touch :

sudo touch /backups/test.txt

Het /backup bestandssysteem wordt als alleen-lezen geëxporteerd en zoals verwacht ziet u een foutmelding Permission denied :

touch: cannot touch '/backups/test': Permission denied

Probeer vervolgens met de opdracht sudo een testbestand in de map /srv/www als root:

sudo touch /srv/www/test.txt

Nogmaals, u ziet Permission denied bericht Permission denied .

touch: cannot touch '/srv/www': Permission denied

Ervan uitgaande dat u een www-data op de clientcomputer hebt met dezelfde UID en GID als op de externe server (wat het geval zou zijn als u bijvoorbeeld nginx op beide machines hebt geïnstalleerd), kunt u testen om een ​​bestand als gebruiker te maken www-data met:

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

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

Om dit te verifiëren, geeft u de bestanden in de map /srv/www :

ls -la /srv/www

De uitvoer moet het nieuw gecreëerde bestand tonen:

drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html -rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt

NFS-bestandssysteem ontkoppelen

sudo umount /backups

Als het koppelpunt is gedefinieerd in het bestand /etc/fstab , zorg er dan voor dat u de regel verwijdert of er een opmerking bij maakt door # aan het begin van de regel toe te voegen.

Conclusie

In deze zelfstudie hebben we u laten zien hoe u een NFS-server instelt en hoe u de externe bestandssystemen op de clientmachines koppelt. Als u NFS in productie implementeert en verstandige gegevens deelt, is het een goed idee om Kerberos-verificatie in te schakelen.

Als alternatief voor NFS kunt u SSHFS gebruiken om externe mappen te koppelen via een SSH-verbinding. SSHFS is standaard gecodeerd en veel eenvoudiger te configureren en te gebruiken.

Als je nog vragen hebt, kun je een reactie achterlaten.

ubuntu nfs mount terminal