NFS alebo Network File System je protokol distribuovaného súborového systému, ktorý umožňuje zdieľať adresáre v sieti. Pomocou NFS môžete pripojiť vzdialené adresáre do vášho systému a pracovať so súbormi na vzdialenom počítači, akoby išlo o lokálne súbory.
Protokol NFS nie je predvolene šifrovaný a neposkytuje autentifikáciu používateľa. Prístup na server je obmedzený IP adresami alebo názvami hostiteľov klienta.
Tento článok vysvetľuje, ako nastaviť server NFSv4 na Ubuntu 20.04. Ukážeme vám tiež, ako pripojiť súborový systém NFS na klientskom počítači.
Predpoklady #
Použijeme dva stroje, jeden so systémom Ubuntu 20.04, ktorý bude fungovať ako server NFS, a ďalší, na ktorom je spustená akákoľvek iná distribúcia systému Linux, na ktorú pripojíme zdieľanú položku. Server a klienti by mali byť schopní navzájom komunikovať prostredníctvom súkromnej siete. Môžete použiť verejné adresy IP a nakonfigurovať bránu firewall servera tak, aby umožňovala prenos na porte 2049
iba z dôveryhodných zdrojov.
Stroje v tomto príklade majú nasledujúce adresy IP:
IP servera NFS: 192.168.33.10 adries IP klientov NFS: od 192.168.33.Rozsah 0/24
Nastavte server NFS #
Prvým krokom je nastavenie servera NFS. Nainštalujeme potrebné balíčky, vytvoríme a exportujeme adresáre NFS a nakonfigurujeme bránu firewall.
Inštalácia servera NFS #
Balík servera NFS poskytuje podporu v užívateľskom priestore potrebnú na spustenie servera jadra NFS. Balík nainštalujete spustením:
sudo apt aktualizácia
sudo apt nainštalovať nfs-kernel-server
Po dokončení inštalácie sa automaticky spustia služby NFS.
V systéme Ubuntu 20.04, NFS verzia 2 je zakázaná. Verzie 3 a 4 sú povolené. Môžete to overiť vykonaním nasledujúcich krokov kat
príkaz:
sudo cat / proc / fs / nfsd / verzie
-2 +3 +4 +4.1 +4.2
NFSv2 je už dosť starý a nie je dôvod ho povoľovať.
Konfigurácia servera NFS je definovaná v / etc / default / nfs-kernel-server
a / etc / default / nfs-common
súbory. Predvolené nastavenia sú dostatočné pre väčšinu situácií.
Vytváranie súborových systémov #
Server NFSv4 používa globálny koreňový adresár a exportované adresáre sú relatívne k tomuto adresáru. Bod pripojenia zdieľania môžete prepojiť s adresármi, ktoré chcete exportovať, pomocou pripojení pripojenia.
V tomto príklade nastavíme / srv / nfs4
adresár ako NFS root. Aby sme lepšie vysvetlili, ako je možné konfigurovať pripojenia NFS, budeme zdieľať dva adresáre (/ var / www
a / opt / zálohy
) s rôznymi konfiguračnými nastaveniami. The / var / www /
je vo vlastníctve používateľa www-data
, a / opt / zálohy
je vo vlastníctve koreň
.
Najskôr vytvorte koreňový adresár a zdieľané prípojné body:
sudo mkdir -p / srv / nfs4 / zálohy
sudo mkdir -p / srv / nfs4 / www
Zviažte pripojenie adresárov k zdieľaným bodom pripojenia:
sudo mount --bind / opt / backups / srv / nfs4 / backups
sudo mount --bind / var / www / srv / nfs4 / www
Ak chcete, aby sa väzby pripájali natrvalo po reštartovaní, otvorte / etc / fstab
spis:
sudo nano / etc / fstab
a pridajte nasledujúce riadky:
/ etc / fstab/ opt / backups / srv / nfs4 / backups none bind 0 0 / var / www / srv / nfs4 / www none bind 0 0
Exportovanie súborových systémov #
Ďalším krokom je pridanie súborových systémov, ktoré sa exportujú, a klientov, ktorým je povolený prístup k týmto zdieľaným položkám / etc / exporty
spis.
Každý riadok pre exportovaný súborový systém má nasledujúci tvar:
exportovať hostiteľa (možnosti)
Kde export
je exportovaný adresár, hostiteľ
je názov hostiteľa alebo adresa IP alebo rozsah, ktorý má prístup k exportu, a možnosti
sú možnosti hostiteľa.
Otvor / etc / exporty
súbor a pridajte nasledujúce riadky:
sudo nano / etc / exporty
/ etc / exporty/ 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.20 (rw, sync, no_subtree_check)
Prvý riadok obsahuje znak fsid = 0
možnosť, ktorá definuje koreňový adresár NFS (/ srv / nfs4
). Prístup k tomuto zväzku NFS je povolený iba klientom z domény 192.168.33.0/24
podsiete. The crossmnt
na zdieľanie adresárov, ktoré sú podadresármi exportovaného adresára, sa vyžaduje voľba.
Druhý riadok ukazuje, ako určiť viac exportných pravidiel pre jeden súborový systém. Prístup na čítanie je povolený pre celú skupinu 192.168.33.0/24
rozsah a prístup na čítanie i zápis iba na server 192.168.33.3
IP adresa. The synchron
voľba povie NFS, aby pred odpovedaním zapísal zmeny na disk.
Posledný riadok je samozrejmý. Ďalšie informácie o všetkých dostupných možnostiach získate zadaním typu človek vyváža
vo vašom termináli.
Uložte súbor a exportujte zdieľané súbory:
sudo exportfs -ar
Vyššie uvedený príkaz musíte spustiť pri každej úprave súboru / etc / exporty
spis. Ak sa vyskytnú nejaké chyby alebo varovania, zobrazia sa na termináli.
Aktuálny aktívny export a jeho stav zobrazíte pomocou:
sudo exportfs -v
Výstup bude obsahovať všetky zdieľané položky s ich možnosťami. Ako vidíte, existujú aj možnosti, ktoré sme v / etc / exporty
spis. Toto sú predvolené možnosti a ak ich chcete zmeniť, musíte ich výslovne nastaviť.
/ srv / nfs4 / zálohy 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)
Na Ubuntu, root_squash
je predvolene povolený. Toto je jedna z najdôležitejších možností týkajúcich sa zabezpečenia NFS. Mapovaním koreňov zabráni používateľom root pripojeným z klientov, aby mali oprávnenie root na pripojené zdieľané zložky UID
a GID
do nikto
/podskupina
UID
/GID
.
Aby mali používatelia na klientskych počítačoch prístup, NFS očakáva, že ID užívateľa a skupiny klienta sa zhodujú s ID na serveri. Ďalšou možnosťou je použiť funkciu NFSv4 idmapping, ktorá prekladá ID používateľov a skupín na mená a naopak.
To je všetko. V tomto okamihu ste nastavili server NFS na serveri Ubuntu. Teraz môžete prejsť na ďalší krok a nakonfigurovať klientov a pripojiť sa k serveru NFS.
Konfigurácia brány firewall #
Ak inštalujete Jenkins na vzdialený server Ubuntu chránený bránou firewall, budete musieť povoliť prenos na porte NFS:
sudo ufw povoliť od 192.168.33.0/24 na akýkoľvek port nfs
Overte zmenu:
sudo ufw status
Výstup by mal ukazovať, že prevádzka na porte 2049
je dovolené:
Do akcie od - ------ ---- 2049 POVOLIŤ 192.168.33.0/24 22 / tcp POVOLENÉ kdekoľvek 22 / tcp (v6) POVOLENÉ kdekoľvek (v6)
Nastaviť klientov NFS #
Teraz, keď je server NFS nastavený a zdieľané položky sa exportujú, je ďalším krokom konfigurácia klientov a pripojenie vzdialených súborových systémov.
Zameriame sa na systémy Linux, ale zdieľanie NFS môžete pripojiť aj na počítačoch macOS a Windows.
Inštalácia klienta NFS #
Na klientskych počítačoch musíme nainštalovať iba nástroje potrebné na pripojenie vzdialeného systému súborov NFS.
Nainštalujte si klienta NFS na Debiane a Ubuntu
Názov balíka, ktorý obsahuje programy na pripojenie súborových systémov NFS na distribúcie založené na Debiane, je
nfs-common
. Ak ho chcete nainštalovať, spustite:sudo apt aktualizácia
sudo apt nainštalovať nfs-common
Nainštalujte si klienta NFS na CentOS a Fedora
Na Red Hat a jeho deriváty nainštalujte
nfs-utils
balenie:sudo yum nainštalovať nfs-utils
Pripojenie súborových systémov #
Budeme pracovať na klientskom počítači s IP 192.168.33.20
, ktorý má prístup na čítanie a zápis na server / srv / nfs4 / www
súborový systém a prístup iba na čítanie / srv / nfs4 / zálohy
systém súborov.
Vytvorte dva nové adresáre pre prípojné body:
sudo mkdir -p / zálohy
sudo mkdir -p / srv / www
Adresáre môžete vytvoriť na ľubovoľnom mieste, ktoré chcete.
Pripojte exportované súborové systémy pomocou namontovať
príkaz:
sudo mount -t nfs -o vers = 4 192.168.33.10: / zálohy / zálohy
sudo mount -t nfs -o vers = 4 192.168.33.10: / www / srv / www
Kde 192.168.33.10
je IP servera NFS. Namiesto adresy IP môžete použiť aj názov hostiteľa, musí ho však klientsky počítač vyriešiť. To sa zvyčajne vykonáva mapovaním názvu hostiteľa na adresu IP v priečinku / etc / hostitelia
spis.
Pri pripájaní súborového systému NFSv4 vynechajte koreňový adresár NFS. Použite / zálohy
, namiesto / srv / nfs4 / zálohy
.
Skontrolujte, či sú vzdialené systémy súborov úspešne pripojené pomocou pripojenia alebo df
príkaz:
df -h
Príkaz vytlačí všetky pripojené systémy súborov. Posledné dva riadky sú pripojené zdieľané zložky:
Použitý veľkosť súborového systému Využiť% Použitý 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% / beh / uzamknutie tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / boot tmpfs 199M 0 199M 0% / beh / užívateľ / 1000 192.168.33.10: / zálohy 124G 2.8G 115G 3% / zálohy 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www
Ak chcete, aby sa pripojenia pri reštartovaní natrvalo, otvorte / etc / fstab
súbor a pridajte nasledujúce riadky ::
sudo nano / etc / fstab
/ etc / fstab192.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
Informácie o dostupných možnostiach pri pripájaní systému súborov NFS získate zadaním príkazu muž nfs
vo vašom termináli.
Ďalšou možnosťou pripojenia vzdialených súborových systémov je použitie buď autofy
nástroj alebo na vytvorenie systémovej jednotky.
Testovanie prístupu NFS #
Vyskúšajme prístup k zdieľaniam vytvorením nového súboru pre každú z nich.
Najskôr sa pokúste vytvoriť testovací súbor pre server / zálohy
adresár pomocou dotknúť sa
príkaz:
sudo touch / backups / test.TXT
The / záloha
súborový systém je exportovaný iba na čítanie a podľa očakávania uvidíte a Prístup zamietnutý
chybná správa:
touch: cannot touch '/ backups / test': Povolenie bolo odmietnuté
Ďalej skúste vytvoriť testovací súbor pre súbor / srv / www
adresár ako root pomocou sudo
príkaz:
sudo touch / srv / www / test.TXT
Opäť uvidíte Prístup zamietnutý
správa.
touch: cannot touch '/ srv / www': Povolenie odmietnuté
Ak si spomínate, / var / www
adresár vlastní www-data
používateľ a toto zdieľanie má root_squash
sada možností, ktorá mapuje užívateľa root na server nikto
užívateľ a podskupina
skupina, ktorá nemá oprávnenie na zápis do vzdialeného zdieľania.
Za predpokladu, že máte a www-data
použitie na klientskom počítači s rovnakým UID
a GID
ako na vzdialenom serveri (čo by sa malo stať, ak ste napríklad nainštalovali nginx na obidva počítače), môžete skúsiť vytvoriť súbor ako užívateľ www-data
:
sudo -u www-data touch / srv / www / test.TXT
Príkaz nezobrazí žiadny výstup, čo znamená, že súbor bol úspešne vytvorený.
Ak to chcete overiť, uveďte zoznam súborov v priečinku / srv / www
adresár:
ls -la / srv / www
Výstup by mal zobrazovať novovytvorený súbor:
drwxr-xr-x 3 www-data www-data 4096 10. apríla 22:18 . drwxr-xr-x 3 koreňový koreň 4096 10. apríla 22:29… -rw-r - r-- 1 www-data www-data 0 10. apríla 21:58 index.html -rw-r - r-- 1 www-data www-data 0 10. apríla 22:18 test.TXT
Odpojenie systému súborov NFS #
Ak vzdialená zdieľaná položka NFS už nie je potrebná, môžete ju odpojiť ako ktorýkoľvek iný pripojený súborový systém pomocou servera umount
príkaz.
Napríklad na odpojenie / záloha
zdieľať, spustili by ste:
sudo umount / zálohy
Ak je prípojný bod definovaný v / etc / fstab
súboru, nezabudnite riadok odstrániť alebo ho komentovať pridaním #
na začiatku riadku.
Záver #
Ukázali sme vám, ako nastaviť server NFS a ako pripojiť vzdialené systémy súborov na klientske počítače. Ak implementujete NFS do výroby a zdieľate rozumné údaje, je dobré povoliť autentifikáciu Kerberos.
Ako alternatívu k NFS môžete použiť SSHFS na pripojenie vzdialených adresárov cez pripojenie SSH. SSHFS je predvolene šifrovaný a oveľa jednoduchšie sa konfiguruje a používa.
Ak máte akékoľvek otázky, neváhajte zanechať komentár.