NFS ali Network File System je protokol porazdeljenega datotečnega sistema, ki vam omogoča skupno rabo imenikov prek omrežja. Z NFS lahko v sistem namestite oddaljene imenike in delate z datotekami na oddaljeni napravi, kot da gre za lokalne datoteke.
Privzeto protokol NFS ni šifriran in ne omogoča preverjanja pristnosti uporabnika. Dostop do strežnika je omejen z naslovi IP odjemalca ali imeni gostiteljev.
V tem članku je razloženo, kako nastaviti strežnik NFSv4 v Ubuntu 20.04. Pokazali vam bomo tudi, kako v odjemalski računalnik namestite datotečni sistem NFS.
Pogoji #
Uporabili bomo dva stroja, enega z Ubuntu 20.04, ki bo deloval kot strežnik NFS, in drugi, ki poganja katero koli drugo distribucijo Linuxa, na katero bomo namestili delež. Strežnik in stranke bi morali imeti možnost medsebojne komunikacije prek zasebnega omrežja. Uporabite lahko javne naslove IP in konfigurirate požarni zid strežnika, da omogoča promet na vratih 2049
samo iz zaupanja vrednih virov.
Stroji v tem primeru imajo naslednje IP-je:
IP strežnika NFS: 192.168.33.10 naslovov odjemalcev NFS: od 192.168.33.Obseg 0/24
Nastavitev strežnika NFS
Prvi korak je nastavitev strežnika NFS. Namestili bomo potrebne pakete, ustvarili in izvozili imenike NFS ter konfigurirali požarni zid.
Namestitev strežnika NFS #
Paket strežnika NFS zagotavlja podporo za uporabniški prostor, potrebno za zagon strežnika jedra NFS. Če želite namestiti paket, zaženite:
posodobitev sudo apt
sudo apt namestite nfs-kernel-server
Ko je namestitev končana, se storitve NFS zaženejo samodejno.
Na Ubuntu 20.04, različica 2 NFS je onemogočena. Različici 3 in 4 sta omogočeni. To lahko preverite tako, da zaženete naslednje mačka
ukaz:
sudo cat / proc / fs / nfsd / različice
-2 +3 +4 +4.1 +4.2
NFSv2 je zdaj že precej star in ni razloga, da bi ga omogočili.
Konfiguracija strežnika NFS je definirana v / etc / default / nfs-kernel-server
in / etc / default / nfs-common
datotek. Privzete nastavitve zadostujejo za večino situacij.
Ustvarjanje datotečnih sistemov #
Strežnik NFSv4 uporablja globalni korenski imenik, izvoženi imeniki pa so glede na ta imenik. Točko vpenjanja v skupni rabi lahko povežete z imeniki, ki jih želite izvoziti, z bind mount-i.
V tem primeru bomo nastavili / srv / nfs4
imenik kot koren NFS. Da bi bolje pojasnili, kako je mogoče konfigurirati pritrdilne elemente NFS, bomo delili dva imenika (/ var / www
in / opt / varnostne kopije
) z različnimi nastavitvami konfiguracije. The / var / www /
je v lasti uporabnika www-podatki
, in / opt / varnostne kopije
je v lasti koren
.
Najprej ustvarite korenski imenik in točke vpenjanja v skupni rabi:
sudo mkdir -p / srv / nfs4 / varnostne kopije
sudo mkdir -p / srv / nfs4 / www
Vežite imenike na točke vpenjanja v skupni rabi:
sudo mount --bind / opt / backups / srv / nfs4 / backups
sudo mount --bind / var / www / srv / nfs4 / www
Če želite, da so nosilci za vezanje trajni med ponovnim zagonom, odprite / etc / fstab
mapa:
sudo nano / etc / fstab
in dodajte naslednje vrstice:
/ etc / fstab/ opt / backups / srv / nfs4 / backups no bind 0 0 / var / www / srv / nfs4 / www none bind 0 0
Izvoz datotečnih sistemov #
Naslednji korak je dodajanje datotečnih sistemov, ki bodo izvoženi, in odjemalcem dovoljen dostop do teh delnic v / etc / izvoz
mapa.
Vsaka vrstica za izvoženi datotečni sistem ima naslednjo obliko:
izvoz gostitelja (možnosti)
Kje izvoz
je izvoženi imenik, gostitelj
je ime gostitelja ali naslov / obseg IP, ki lahko dostopa do izvoza, in opcije
so gostiteljske možnosti.
Odprite / etc / izvoz
datoteko in dodajte naslednje vrstice:
sudo nano / etc / export
/ etc / izvoz/ srv / nfs4 192.168.33.0/24 (rw, sync, no_subtree_check, crossmnt, fsid = 0) / srv / nfs4 / varnostne kopije 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)
Prva vrstica vsebuje fsid = 0
možnost, ki definira korenski imenik NFS (/ srv / nfs4
). Dostop do tega zvezka NFS je dovoljen samo strankam iz 192.168.33.0/24
podomrežje. The crossmnt
možnost je potrebna za skupno rabo imenikov, ki so podimeniki izvoženega imenika.
Druga vrstica prikazuje, kako določiti več pravil izvoza za en datotečni sistem. Dostop do branja je dovoljen v celoti 192.168.33.0/24
in dostop do branja in pisanja samo do 192.168.33.3
IP naslov. The sinhronizacijo
Možnost pove NFS, naj napiše spremembe na disk, preden odgovori.
Zadnja vrstica je samoumevna. Za več informacij o vseh razpoložljivih vrstah možnosti človek izvoz
v terminalu.
Shranite datoteko in izvozite skupne rabe:
sudo exportfs -ar
Ukaz zgoraj morate zagnati vsakič, ko spremenite / etc / izvoz
mapa. Če obstajajo napake ali opozorila, bodo prikazana na terminalu.
Če si želite ogledati trenutni aktivni izvoz in njegovo stanje, uporabite:
sudo exportfs -v
Rezultat bo vse delnice z njihovimi možnostmi. Kot lahko vidite, obstajajo tudi možnosti, ki jih nismo opredelili v / etc / izvoz
mapa. To so privzete možnosti in če jih želite spremeniti, jih morate izrecno nastaviti.
/ srv / nfs4 / varnostne kopije 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 / varnostne kopije 192.168.33.0/24 (ro, wdelay, root_squash, no_subtree_check, sec = sys, ro, secure, root_squash, no_all_squash)
Na Ubuntuju, root_squash
je privzeto omogočena. To je ena najpomembnejših možnosti glede varnosti NFS. S preslikavanjem root preprečuje korenskim uporabnikom, povezanim s strankami, korenske privilegije na nameščenih skupnih rabah UID
in GID
do nihče
/nogroup
UID
/GID
.
Da bi imeli uporabniki na odjemalskih strojih dostop, NFS pričakuje, da se odjemalčevi ID-ji uporabnikov in skupin ujemajo z ID-ji na strežniku. Druga možnost je uporaba funkcije preslikave NFSv4, ki ID-je uporabnikov in skupin prevede v imena in obratno.
To je to. Na tem mestu ste na strežniku Ubuntu nastavili strežnik NFS. Zdaj lahko preidete na naslednji korak in konfigurirate odjemalce ter se povežete s strežnikom NFS.
Konfiguracija požarnega zidu #
Če Jenkinsa nameščate na oddaljeni strežnik Ubuntu, ki je zaščiten z požarnim zidom, boste morali omogočiti promet na vratih NFS:
sudo ufw dovoli od 192.168.33.0/24 v poljubna vrata nfs
Preverite spremembo:
status sudo ufw
Izhod mora pokazati, da je promet na pristanišču 2049
je dovoljeno:
Za ukrepanje od - ------ ---- 2049 DOVOLITE 192.168.33.0/24 22 / tcp ALLOW Anywhere 22 / tcp (v6) ALLOW Anywhere (v6)
Nastavite odjemalce NFS
Zdaj, ko je strežnik NFS nastavljen in so skupne rabe izvožene, je naslednji korak konfiguriranje odjemalcev in namestitev oddaljenih datotečnih sistemov.
Osredotočili se bomo na sisteme Linux, vendar lahko del NFS namestite tudi na računalnike macOS in Windows.
Namestitev odjemalca NFS
Na odjemalskih računalnikih moramo namestiti samo orodja, potrebna za namestitev oddaljenega datotečnega sistema NFS.
Namestite odjemalca NFS v Debian in Ubuntu
Ime paketa, ki vključuje programe za vgradnjo datotečnih sistemov NFS v distribucije, ki temeljijo na Debianu, je
nfs-skupno
. Če ga želite namestiti, zaženite:posodobitev sudo apt
sudo apt namestite nfs-common
Namestite odjemalca NFS na CentOS in Fedora
Na Red Hat in njegove izpeljanke namestite
nfs-utils
paket:sudo yum namestite nfs-utils
Namestitev datotečnih sistemov #
Delali bomo na odjemalskem računalniku z IP-jem 192.168.33.20
, ki ima dostop do branja in pisanja / srv / nfs4 / www
datotečni sistem in dostop samo za branje do / srv / nfs4 / varnostne kopije
datotečni sistem.
Ustvarite dva nova imenika za točke vpetja:
sudo mkdir -p / varnostne kopije
sudo mkdir -p / srv / www
Imenike lahko ustvarite na katerem koli mestu, ki ga želite.
Izvožene datotečne sisteme namestite z nosilec
ukaz:
sudo mount -t nfs -o vers = 4 192.168.33.10: / varnostne kopije / varnostne kopije
sudo mount -t nfs -o vers = 4 192.168.33.10: / www / srv / www
Kje 192.168.33.10
je IP strežnika NFS. Namesto naslova IP lahko uporabite tudi ime gostitelja, vendar ga mora odjemalska naprava rešiti. Običajno se to naredi tako, da se ime gostitelja preslika v IP v / etc / hosts
mapa.
Pri namestitvi datotečnega sistema NFSv4 izpustite korenski imenik NFS. Uporaba / varnostne kopije
, namesto / srv / nfs4 / varnostne kopije
.
Preverite, ali so oddaljeni datotečni sistemi uspešno nameščeni, bodisi z namestitvijo bodisi df
ukaz:
df -h
Ukaz bo natisnil vse nameščene datotečne sisteme. Zadnji dve vrstici sta nameščeni skupni rabi:
Velikost uporabljenega razpoložljivega datotečnega sistema% Na voljo na 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: / varnostne kopije 124G 2.8G 115G 3% / varnostne kopije 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www
Če želite, da so nosilci ob ponovnem zagonu trajni, odprite / etc / fstab
datoteko in dodajte naslednje vrstice:
sudo nano / etc / fstab
/ etc / fstab192.168.33.10: / varnostne kopije / varnostne kopije nfs privzeto, timeo = 900, retrans = 5, _netdev 0 0 192.168.33.10: / www / srv / www nfs privzeto, timeo = 900, retrans = 5, _netdev 0 0
Za informacije o razpoložljivih možnostih pri namestitvi datotečnega sistema NFS vnesite človek nfs
v terminalu.
Druga možnost namestitve oddaljenih datotečnih sistemov je uporaba enega od avtof
orodje ali za ustvarjanje sistemske enote.
Testiranje dostopa do NFS
Preizkusimo dostop do delnic z ustvarjanjem nove datoteke na vsaki od njih.
Najprej poskusite ustvariti preskusno datoteko v / varnostne kopije
imenik z uporabo dotik
ukaz:
sudo touch / varnostne kopije / test.txt
The /rezerva
datotečni sistem izvozi kot samo za branje in po pričakovanjih boste videli Dovoljenje zavrnjeno
obvestilo o napaki:
dotik: ne more se dotakniti '/ varnostne kopije / test': Dovoljenje zavrnjeno
Nato poskusite ustvariti preskusno datoteko v / srv / www
imenik kot korenski z uporabo sudo
ukaz:
sudo touch / srv / www / test.txt
Še enkrat boste videli Dovoljenje zavrnjeno
sporočilo.
dotik: ne more se dotakniti '/ srv / www': Dovoljenje zavrnjeno
Če se spomnite, / var / www
imenik je v lasti www-podatki
uporabnik, in ta delež ima root_squash
nabor možnosti, ki korenskega uporabnika preslika v nihče
uporabnik in nogroup
skupina, ki nima dovoljenj za pisanje v oddaljeni skupni rabi.
Ob predpostavki, da imate www-podatki
uporaba na odjemalskem računalniku z istim UID
in GID
kot na oddaljenem strežniku (kar bi se moralo zgoditi, če ste na primer namestili nginx na obe računalniki), lahko poskusite ustvariti datoteko kot uporabnik www-podatki
:
sudo -u www-data touch / srv / www / test.txt
Ukaz ne bo prikazal izhoda, kar pomeni, da je bila datoteka uspešno ustvarjena.
Za potrditev navedite datoteke v / srv / www
imenik:
ls -la / srv / www
Izhod mora prikazati novo ustvarjeno datoteko:
drwxr-xr-x 3 www-data www-data 4096 10. april 22:18 . drwxr-xr-x 3 korenski koren 4096 10. april 22: 29… -rw-r - r-- 1 www-data www-data 0 10. april 21:58 indeks.html -rw-r - r-- 1 www-data www-data 0 10. april 22:18 test.txt
Odstranitev datotečnega sistema NFS št
Če oddaljena skupna raba NFS ni več potrebna, jo lahko s pomočjo datoteke umount
ukaz.
Na primer, da odstranite /rezerva
delite, zagnali bi:
sudo umount / varnostne kopije
Če je točka pritrditve definirana v / etc / fstab
datoteke odstranite vrstico ali jo komentirajte z dodajanjem #
na začetku vrstice.
Zaključek #
Pokazali smo vam, kako nastaviti strežnik NFS in kako namestiti oddaljene datotečne sisteme na odjemalske stroje. Če uporabljate NFS v proizvodnji in delite smiselne podatke, je dobro, da omogočite preverjanje pristnosti kerberos.
Kot alternativo NFS lahko s SSHFS namestite oddaljene imenike prek povezave SSH. SSHFS je privzeto šifriran in veliko lažji za konfiguracijo in uporabo.
Če imate kakršna koli vprašanja, lahko pustite komentar.