NFS eller Network File System är ett distribuerat filsystemprotokoll som låter dig dela kataloger över ett nätverk. Med NFS kan du montera fjärrkataloger på ditt system och arbeta med filerna på fjärrmaskinen som om de vore lokala filer.
Som standard är NFS-protokollet inte krypterat och tillhandahåller inte användarautentisering. Åtkomst till servern är begränsad av klientens IP-adresser eller värdnamn.
Den här artikeln förklarar hur du ställer in en NFSv4-server på Ubuntu 20.04. Vi visar dig också hur du monterar ett NFS-filsystem på klientmaskinen.
Förutsättningar #
Vi använder två maskiner, en som kör Ubuntu 20.04, som kommer att fungera som en NFS-server, och en annan som kör någon annan Linux-distribution som vi monterar delningen på. Servern och klienterna ska kunna kommunicera med varandra via ett privat nätverk. Du kan använda offentliga IP-adresser och konfigurera serverns brandvägg för att tillåta trafik på porten 2049
endast från betrodda källor.
Maskinerna i detta exempel har följande IP: er:
NFS-server IP: 192.168.33.10 NFS-klienters IP: er: från 192.168.33.0/24 intervall
Ställ in NFS-server #
Det första steget är att ställa in NFS-servern. Vi installerar nödvändiga paket, skapar och exporterar NFS-katalogerna och konfigurerar brandväggen.
Installera NFS-servern #
NFS-serverpaketet ger stöd för användarutrymme som behövs för att köra NFS-kärnservern. För att installera paketet, kör:
sudo apt uppdatering
sudo apt installera nfs-kernel-server
När installationen är klar startar NFS-tjänsterna automatiskt.
På Ubuntu 20.04, NFS version 2 är inaktiverad. Version 3 och 4 är aktiverade. Du kan verifiera det genom att köra följande katt
kommando:
sudo cat / proc / fs / nfsd / versioner
-2 +3 +4 +4.1 +4.2
NFSv2 är ganska gammalt nu, och det finns ingen anledning att aktivera det.
NFS-serverkonfiguration definieras i / etc / default / nfs-kernel-server
och / etc / default / nfs-common
filer. Standardinställningarna är tillräckliga för de flesta situationer.
Skapa filsystem #
NFSv4-servern använder en global rotkatalog och de exporterade katalogerna är relativt denna katalog. Du kan länka delningsfästpunkten till de kataloger som du vill exportera med bindningsfästen.
I det här exemplet ställer vi in / srv / nfs4
katalog som NFS-rot. För att bättre förklara hur NFS-fästen kan konfigureras, kommer vi att dela två kataloger (/ var / www
och / opt / backup
) med olika konfigurationsinställningar. De / var / www /
ägs av användaren www-data
, och / opt / backup
ägs av rot
.
Skapa först rotkatalogen och dela monteringspunkter:
sudo mkdir -p / srv / nfs4 / säkerhetskopior
sudo mkdir -p / srv / nfs4 / www
Bind montera katalogerna till delmonteringspunkterna:
sudo mount - bind / opt / backup / srv / nfs4 / backup
sudo mount - bind / var / www / srv / nfs4 / www
För att göra bindningsfästena permanenta omstartar, öppna / etc / fstab
fil:
sudo nano / etc / fstab
och lägg till följande rader:
/ etc / fstab/ opt / backup / srv / nfs4 / backup ingen bindning 0 0 / var / www / srv / nfs4 / www none bind 0 0
Exportera filsystemen #
Nästa steg är att lägga till de filsystem som kommer att exporteras och klienterna får åtkomst till dessa delar till / etc / export
fil.
Varje rad för ett exporterat filsystem har följande form:
exportera värd (alternativ)
Var exportera
är den exporterade katalogen, värd
är ett värdnamn eller IP-adress / intervall som har åtkomst till exporten, och alternativ
är värdalternativen.
Öppna / etc / export
fil och lägg till följande rader:
sudo nano / etc / export
/ etc / export/ srv / nfs4 192.168.33.0/24 (rw, sync, no_subtree_check, crossmnt, fsid = 0) / srv / nfs4 / backup 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)
Den första raden innehåller fsid = 0
som definierar NFS-rotkatalogen (/ srv / nfs4
). Åtkomst till denna NFS-volym är endast tillåten för klienter från 192.168.33.0/24
undernät. De crossmnt
alternativet krävs för att dela kataloger som är underkataloger i en exporterad katalog.
Den andra raden visar hur man anger flera exportregler för ett filsystem. Läsåtkomst är tillåten för hela 192.168.33.0/24
intervall och både läs- och skrivåtkomst endast till 192.168.33.3
IP-adress. De synkronisera
alternativ ber NFS att skriva ändringar på disken innan du svarar.
Den sista raden är självförklarande. För mer information om alla tillgängliga alternativ, typ man exporterar
i din terminal.
Spara filen och exportera delningarna:
sudo exportfs -ar
Du måste köra kommandot ovan varje gång du ändrar / etc / export
fil. Om det finns några fel eller varningar kommer de att visas på terminalen.
För att se den aktuella aktiva exporten och deras tillstånd, använd:
sudo exportfs -v
Produktionen inkluderar alla aktier med deras optioner. Som du kan se finns det också alternativ som vi inte har definierat i / etc / export
fil. Det här är standardalternativ och om du vill ändra dem måste du uttryckligen ställa in dessa alternativ.
/ srv / nfs4 / säkerhetskopior 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 / backup 192.168.33.0/24 (ro, wdelay, root_squash, no_subtree_check, sec = sys, ro, secure, root_squash, no_all_squash)
På Ubuntu, root_squash
är aktiverat som standard. Detta är ett av de viktigaste alternativen för NFS-säkerhet. Det förhindrar root-användare som är anslutna från klienterna från att ha root-privilegier på de monterade delarna genom att mappa root UID
och GID
till ingen
/noggrupp
UID
/GID
.
För att användarna på klientdatorerna ska ha åtkomst förväntar sig NFS att klientens användar- och grupp-ID matchar med dem på servern. Ett annat alternativ är att använda NFSv4 idmapping-funktionen som översätter användar- och grupp-ID: n till namn och tvärtom.
Det är allt. Vid den här tiden har du konfigurerat en NFS-server på din Ubuntu-server. Du kan nu gå till nästa steg och konfigurera klienterna och ansluta till NFS-servern.
Brandväggskonfiguration #
Om du installerar Jenkins på en fjärran Ubuntu-server som är skyddad av en brandvägg måste du aktivera trafik på NFS-porten:
sudo ufw tillåta från 192.168.33.0/24 till valfri port nfs
Verifiera ändringen:
sudo ufw-status
Utgången ska visa att trafiken på porten 2049
är tillåtet:
Till handling från - ------ ---- 2049 TILLÅT 192.168.33.0/24 22 / tcp ALLOW Anywhere 22 / tcp (v6) ALLOW Anywhere (v6)
Ställ in NFS-klienterna #
Nu när NFS-servern är konfigurerad och aktier exporteras är nästa steg att konfigurera klienterna och montera fjärrfilsystemen.
Vi fokuserar på Linux-system, men du kan också montera NFS-andelen på macOS och Windows-maskiner.
Installera NFS-klienten #
På klientmaskinerna behöver vi bara installera de verktyg som krävs för att montera ett fjärranslutet NFS-filsystem.
Installera NFS-klient på Debian och Ubuntu
Namnet på paketet som innehåller program för montering av NFS-filsystem på Debian-baserade distributioner är
nfs-common
. För att installera det, kör:sudo apt uppdatering
sudo apt installera nfs-common
Installera NFS-klient på CentOS och Fedora
Installera på Red Hat och dess derivat
nfs-utils
paket:sudo yum installera nfs-utils
Montering av filsystem #
Vi arbetar på klientmaskinen med IP 192.168.33.20
, som har läs- och skrivåtkomst till / srv / nfs4 / www
filsystem och skrivskyddad åtkomst till / srv / nfs4 / säkerhetskopior
filsystem.
Skapa två nya kataloger för monteringspunkterna:
sudo mkdir -p / säkerhetskopior
sudo mkdir -p / srv / www
Du kan skapa kataloger på vilken plats du vill.
Montera de exporterade filsystemen med montera
kommando:
sudo mount -t nfs -o vers = 4 192.168.33.10: / säkerhetskopior / säkerhetskopior
sudo mount -t nfs -o vers = 4 192.168.33.10: / www / srv / www
Var 192.168.33.10
är IP: n för NFS-servern. Du kan också använda värdnamnet istället för IP-adressen, men det måste lösas av klientmaskinen. Detta görs vanligtvis genom att mappa värdnamnet till IP-adressen i / etc / värdar
fil.
När du monterar ett NFSv4-filsystem, utelämna NFS-rotkatalogen. Använda sig av / säkerhetskopior
, istället för / srv / nfs4 / säkerhetskopior
.
Kontrollera att fjärrfilsystemen har monterats framgångsrikt med antingen mount eller df
kommando:
df -h
Kommandot skriver ut alla monterade filsystem. De sista två raderna är de monterade aktierna:
Filsystemstorlek som används Tillgänglig användning% monterad på 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% / kör / lås tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / start tmpfs 199M 0199M 0% / kör / användare / 1000192.168.33.10: / säkerhetskopior 124G 2.8G 115G 3% / säkerhetskopior 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www
För att göra fästena permanent vid omstart, öppna / etc / fstab
fil och lägg till följande rader ::
sudo nano / etc / fstab
/ etc / fstab192.168.33.10: / backup / backups nfs standardvärden, timeo = 900, retrans = 5, _netdev 0 0 192.168.33.10: / www / srv / www nfs standardvärden, timeo = 900, retrans = 5, _netdev 0 0
För information om tillgängliga alternativ när du monterar ett NFS-filsystem, skriv man nfs
i din terminal.
Ett annat alternativ för att montera fjärrfilsystem är att använda antingen autofs
verktyg eller för att skapa en systemd enhet.
Testar NFS Access #
Låt oss testa åtkomsten till aktierna genom att skapa en ny fil på var och en av dem.
Först försök skapa en testfil till / säkerhetskopior
katalog med Rör
kommando:
sudo touch / säkerhetskopior / test.Text
De /säkerhetskopiering
filsystemet exporteras som skrivskyddad och som förväntat ser du ett Åtkomst nekad
felmeddelande:
touch: kan inte röra vid '/ backup / test': Tillåtelse nekad
Försök sedan skapa en testfil till / srv / www
katalog som en rot med hjälp av sudo
kommando:
sudo touch / srv / www / test.Text
Återigen kommer du att se Åtkomst nekad
meddelande.
touch: kan inte röra vid '/ srv / www': Tillstånd nekad
Om du kommer ihåg, / var / www
katalogen ägs av www-data
användare, och denna delning har root_squash
alternativuppsättning som mappar rotanvändaren till ingen
användare och noggrupp
grupp som inte har skrivbehörighet till fjärrdelningen.
Förutsatt att du har en www-data
användning på klientmaskinen med samma UID
och GID
som på fjärrservern (vilket skulle vara fallet om du till exempel installerade nginx på båda maskinerna) kan du försöka skapa en fil som användare www-data
:
sudo -u www-data touch / srv / www / test.Text
Kommandot visar ingen utdata vilket betyder att filen skapades.
För att verifiera det listar filerna i / srv / www
katalog:
ls -la / srv / www
Utgången ska visa den nyskapade filen:
drwxr-xr-x 3 www-data www-data 4096 10 apr 22:18 . drwxr-xr-x 3 root root 4096 Apr 10 22: 29 ... -rw-r - r-- 1 www-data www-data 0 Apr 10 21:58 index.html -rw-r - r-- 1 www-data www-data 0 Apr 10 22:18 test.Text
Avmontering av NFS-filsystem #
Om den externa NFS-resursen inte längre behövs kan du avmontera den som alla andra monterade filsystem som använder umount
kommando.
Till exempel för att avmontera /säkerhetskopiering
dela, skulle du springa:
sudo umount / backup
Om monteringspunkten är definierad i / etc / fstab
se till att du tar bort raden eller kommenterar den genom att lägga till #
i början av raden.
Slutsats #
Vi har visat dig hur du ställer in en NFS-server och hur du monterar fjärrfilsystemen på klientmaskinerna. Om du implementerar NFS i produktion och delar förnuftiga data är det en bra idé att aktivera kerberos-autentisering.
Som ett alternativ till NFS kan du använda SSHFS för att montera fjärrkataloger via en SSH-anslutning. SSHFS är krypterad som standard och mycket lättare att konfigurera och använda.
Lämna gärna en kommentar om du har några frågor.