Späť na blog

Nastavenie NFS pripojenia na Ubuntu 20.04

Nastavenie NFS pripojenia na Ubuntu 20.04

The Network File System (NFS) je distribuované úložné riešenie. Je to protokol súborového systému, ktorý umožňuje pripojiť vzdialené adresáre na lokálny server a používať ich, akoby išlo o lokálne úložisko. NFS umožňuje viacerým klientom zdieľať vzdialené úložisko. Je vhodný pre prostredia, ktoré pravidelne vyžadujú zdieľané prostriedky. NFS je postavený na systéme ONC RPC (Open Network Computing Remote Procedure Call). Je to otvorený štandard definovaný v RFC (Request for Comments). To umožňuje komukoľvek implementovať tento protokol.

V tomto návode si prejdeme kroky nastavenia a konfigurácie pripojenia NFS na systéme Ubuntu 20.04.

Požiadavky

Ako napovedá popis NFS, konfigurácia NFS sa skladá z dvoch častí:

  • Hostiteľ: Fyzicky ukladá dáta a zdieľa úložisko s „klientskymi“ systémami.

  • Klient: Systém, ktorý sa pripája k „hostiteľovi“ a využíva vzdialené úložisko, akoby bolo lokálne.

Pre našu ukážku budeme používať dva servery, oba nakonfigurované s Ubuntu 20.04. Tu je jednoduchý návod na to, ako nastaviť váš server Ubuntu. V celom návode budeme tieto servery označovať ako hostiteľ a klient. Upozorňujeme, že akcia pre klienta bude rovnaká, aj keď ich je viac.

Serverom sú priradené nasledujúce IP adresy. Tieto servery sú hostované spoločnosťou CloudSigma:

  • hostiteľ: 31.171.240.79

  • klient: 31.171.250.109

Uistite sa, že ich nahradíte príslušnými IP adresami.

Inštalácia NFS

NFS je ľahko dostupný z oficiálnych repozitárov Ubuntu. Existujú rôzne softvérové balíky pre hostiteľa a klienta systémy.

  • Inštalácia NFS na hostiteľa

Na hostiteľovi potrebujeme komponenty, ktoré stroj vybavia na to, aby slúžil ako NFS hostiteľ. Prichádza vo forme balíka nfs-kernel-server. Ubuntu používa APT ako správcu balíkov. Najprv spustite terminál a aktualizujte databázu balíkov APT :

Server Apt Update

Ďalej nainštalujte balík nfs-kernel-server . V prípade potreby sa APT postará o akékoľvek ďalšie závislosti:

Install nfs kernel server

  • Inštalácia NFS na klienta

Na klientskom systéme potrebujeme funkciu na pripojenie k adresárom hostiteľa cez sieť. Nevyžaduje to funkciu NFS servera. V systéme Ubuntu je to pribalené v balíku nfs-common. Aktualizujte databázu balíkov APT :

Client apt update

Potom nainštalujte balík nfs-common :

Install nfs common

Zdieľané adresáre na hostiteľovi

Ďalej budeme zdieľať dva samostatné adresáre, každý s inou konfiguráciou. Ukážeme si dva kľúčové spôsoby, akými fungujú pripojenia NFS s ohľadom na prístup superpoužívateľa. V predvolenom nastavení majú superpoužívatelia právomoc vykonávať čokoľvek v celom systéme. Adresáre pripojené cez NFS však nie sú súčasťou systému, na ktorom sú pripojené. NFS server odmietne vykonať akúkoľvek operáciu, ktorá vyžaduje privilégiá superpoužívateľa. Toto obmedzenie znamená, že klienti nemajú právomoc zapisovať, meniť vlastníctvo a vykonávať iné úlohy superpoužívateľa na pripojeniach NFS.

Je možné povoliť určitým dôveryhodným používateľom vykonávať tieto úlohy na pripojených súborových systémoch. Prináša to však so sebou určité riziko, keďže takýto klient môže potenciálne získať plný prístup k hostiteľovi. To sa dá zmierniť správnym riadením oprávnení používateľov. V systéme Linux súbor sudoers riadi všetky privilégiá používateľov v systéme. Ďalšie informácie nájdete v našom návode na ako nakonfigurovať súbor sudoers v systéme Linux.

  • Všeobecné pripojenie

Prvým príkladom bude univerzálne pripojenie NFS s predvoleným správaním NFS. Pri tomto prístupe je pre klienta mimoriadne ťažké vykonávať akcie superpoužívateľa na pripojených úložiskách. Tento typ pripojenia NFS sa bežne nasadzuje na ukladanie súborov, nahrávanie pomocou CMS (Content Management System) alebo zdieľanie projektových súborov atď.

Nasledujúce kroky sa majú vykonať na hostiteľskom systéme. Najprv vytvorte adresár na zdieľanie s názvom nfs:

Create nfs general dir

Keďže adresár bol vytvorený s sudo oprávnením, vlastník bude root:

List nfs general

V predvolenej konfigurácii NFS preloží akúkoľvek operáciu používateľa root z klientskej strany na nobody:nogroup prihlasovacie údaje z bezpečnostných dôvodov. Kvôli konzistentnosti zmeňte vlastníctvo adresára tak, aby zodpovedalo týmto údajom:

Change owner nogroup

  • Domovský adresár

Druhým príkladom je sprístupnenie domovského adresára používateľa host pre klientov. Dôveryhodní správcovia z vybraných klientov môžu pristupovať k pohodlnej správe používateľov. Adresár /home predvolene existuje, takže nie je potrebné vytvárať žiadny adresár. Čo sa týka oprávnení adresára, nie je potrebné vykonávať žiadne zmeny, pretože by to spôsobilo viac problémov ako úžitku.

Konfigurácia NFS exportov

Adresáre na zdieľanie sú teraz vytvorené. Ďalej je potrebné nakonfigurovať NFS, aby boli dostupné pre klientov. NFS používa konfiguračný súbor na sledovanie toho, ktoré adresáre sa majú zdieľať. Otvorte nasledujúci konfiguračný súbor NFS vo vašom obľúbenom textovom editore:

exports file

Komentárová časť súboru popisuje všeobecnú štruktúru syntaxe konfigurácie. Stručne povedané, akýkoľvek adresár musí byť deklarovaný v nasledujúcom formáte:

Pre dva adresáre, ktoré sme sa rozhodli zdieľať, bude konfigurácia vyzerať takto. Oba adresáre majú takmer rovnaké možnosti konfigurácie:

exports file mod

Tu je rýchly prehľad možností konfigurácie:

  • rw: Klientovi je udelené oprávnenie na čítanie aj zápis do zväzku.

  • sync: Núti NFS zapísať zmeny na disk pred odoslaním odpovede. Ponúka to stabilnejšie a konzistentnejšie prostredie. Odpoveď bude odrážať skutočný stav vzdialeného zväzku. Súborové operácie však budú pomalšie.

  • no_subtree_check: Zabraňuje kontrole podstromu (subtree checking). Ak nie je zakázaná, hostitelia budú nútení kontrolovať existenciu súboru v exportovanom strome pri každej jednej požiadavke od klienta. To môže viesť k mnohým problémom, napríklad k premenovaniu súboru počas jeho používania klientom. Vo väčšine prípadov je najlepším riešením zakázanie kontroly podstromu.

  • no_root_squash: Ako už bolo spomenuté, NFS preloží akúkoľvek požiadavku od vzdialeného používateľa root na neprivilegovaného používateľa. Ide o zámernú bezpečnostnú funkciu, ktorá má zabrániť nežiaducemu prístupu k hostiteľskému systému. Použitie tejto možnosti však toto správanie zakáže.

Uložte konfiguračný súbor a ukončite editor. Aby sa zmeny prejavili, reštartujte NFS server:

Restart nfs kernel server

Úprava firewallu

Pre každý server je správna konfigurácia firewallu nevyhnutnosťou. Za predpokladu, že máte podľa toho nakonfigurovaný server Ubuntu 20.04, mal by byť aktívny firewall UFW. Je to jednoduchý, ale výkonný firewall, s ktorým prichádza väčšina distribúcií Linuxu. Pre začiatočníkov je tu rýchly návod vysvetľujúci UFW, ako funguje a bežné používanie UFW s príkladmi.

V predvolenom nastavení bude firewall blokovať všetku prichádzajúcu aj odchádzajúcu prevádzku. Aby sme zabezpečili, že sa NFS server môže správne pripojiť a vymieňať si dáta, musíme pridať výnimku pre protokol NFS. Najprv skontrolujte stav firewallu. Vypíšu sa aj všetky aktuálne pravidlá:

ufw status

Ako môžeme vidieť, do systému je povolená iba SSH prevádzka. Musíme pridať výnimku na povolenie NFS prevádzky.

Vo väčšine prípadov sa dôrazne odporúča použiť najprísnejšie pravidlo, ktoré stále povoľuje potrebnú prevádzku. Takže povolíme pripojenie k hostiteľovi iba vybraným klientom:

ufw allow ports

Potom znova skontrolujte stav firewallu:

ufw status after change

Vytvorenie bodu pripojenia

Server je teraz pripravený povoliť klientskemu systému pripojiť sa k protokolu NFS. Ďalej musíme pripraviť klienta. Na prístup k vzdialenému zväzku musí byť pripojený lokálne na klientovi. Pokiaľ ide o bod pripojenia, odporúča sa použiť vyhradený prázdny adresár.

Pre dva vzdialené zväzky vytvorte dva samostatné body pripojenia:

Create client nfs general directory

Create client nfs home directory

Teraz, keď sú body pripojenia pripravené, musíte pripojiť vzdialené zväzky:

Mount general directory on client

Mount home directory on client

Môžeme overiť, či boli pripojenia úspešné. Skontrolujte zoznam všetkých pripojených zväzkov:

Disk free in client

Voila! Vzdialené zväzky sú úspešne pripojené. Využitie miesta môžeme skontrolovať aj pomocou nasledujúceho príkazu:

Disk usage in client home

Testovanie prístupu k NFS

Doteraz boli vzdialené zväzky správne pripojené. Nebude to však na nič platné, ak klient nebude môcť čítať/zapisovať dáta na vzdialenom zväzku. Ak to chcete overiť, vytvorte testovací súbor v pripojení (pripojeniach) NFS. Tu sa súbor vytvorí s root oprávnením na otestovanie, či konfigurácie špecifické pre root fungujú správne:

Create file in nfs

Ďalej skontrolujte vlastníctvo súboru:

Check ownership of file created

Ako vidíme, NFS prekladá vlastníka súboru na nobody:nogroup. Adresár /var/nfs/ general má vlastníctvo nobody:nogroup, takže NFS prekladá vlastníctvo súboru. Je čas otestovať druhé pripojenie NFS:

Create home file

Skontrolujte existenciu a vlastníctvo súboru:

Check ownership of home file

V tomto prípade NFS nepreložil vlastníctvo súboru. Tento klient bol nakonfigurovaný tak, aby mohol vykonávať administratívne akcie. Navyše pôvodný hostiteľský adresár /home nemá vlastníctvo nastavené na nobody:nogroup.

Ďalšie triky

  • Pripojenie pri spúšťaní

Doteraz sme museli zväzok NFS pripájať do lokálneho adresára manuálne. Ak sa neodpoja, pripojenia NFS zostanú aktívne až do reštartu systému. Ak sa zväzok NFS používa pravidelne, manuálne pripájanie sa stáva mimoriadne únavným. V prípade viacerých pripojení NFS je nepraktické pripájať ich manuálne jedno po druhom.

Pomocou súboru /etc/fstab môžeme tento proces automatizovať. Počas spúšťania tento skript automaticky pripojí zväzky NFS do cieľových bodov pripojenia. Otvorte súbor v textovom editore:

fstab file

Pridajte nasledujúce riadky na pripojenie vzdialených zväzkov hostiteľského systému:

fstab file after change

Uložte skript a zatvorte textový editor. Pri nasledujúcom spustení Linux automaticky pripojí vzdialené zväzky. Upozorňujeme, že spustenie systému môže chvíľu trvať, kým sa pripojí a namontuje zväzky.

  • Odpojenie zväzku NFS

Ak vzdialený zväzok už nie je potrebný, jeho odpojením ho odstránite z klientskeho systému. Pred odpojením sa však uistite, že vzdialený zväzok nepoužíva žiadna aplikácia ani skript. Odpájanie pripojení NFS je podobné ako odpájanie akýchkoľvek iných pripojení. V tomto prípade odpojte /nfs/home a /nfs/general:

Unmount nfs

Potom overte akciu:

Disks after unmount

Záverečné zhrnutie

V tomto návode sme vytvorili NFS server a ukázali sme si niektoré zo základov vzdialeného zdieľania NFS. Ak máte záujem o implementáciu NFS v produkčnom prostredí, majte na pamäti, že protokol NFS nie je šifrovaný. Môže to predstavovať určité bezpečnostné riziká, napríklad útoky typu man-in-the-middle.

Príjemnú prácu s počítačom!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.