Skip to main content

1.5 TrueNAS – konfigurácia zdieľania SMB

Konfigurácia služby SMB

V prvom rade by sme mali nakonfigurovať samotnú „službu zdieľania súborov“. Využíva sa protokol SMB, v Linuxe je táto služba známa aj pod označením „Samba“, vo Windowse ide o „zdieľanie súborov“.

Samotnú službu môžeme konfigurovať cez ponuku Shares → Windows (SMB) Share → Config Service.

  • NetBIOS meno má limit 15 znakov, môžeme dať napríklad v tvare nas-priezvisko;
  • pracovnú skupinu by sme mali dať rovnakú, akú používajú počítače, v škole je to „SSND“, no môžeme skúsiť aj „UST-A2“;
  • do popisu môžeme dať prakticky čokoľvek, napríklad „TrueNAS Server Priezvisko“;
  • následne môžeme službu spustiť (Turn On Service).

V skutočnosti sa už NetBIOS mená a ani pracovné skupiny v moderných OS nepoužívajú. V prieskumníkovi súborov Windows síce uvidíme tieto mená pod ikonou „Sieť“, no praktickejšie je využívanie doménových mien.

Je samozrejme vhodné, aby sa služba SMB automaticky spúšťala. To môžeme dosiahnuť cez ponuku System → Services. Tam neskôr nájdeme aj zoznam aktuálne pripojených klientov (Sessions).

Spoločný priečinok pre čítanie i zápis

Aby bol možný prístup zo siete, musíme vytvoriť nejaký priečinok a nazdieľať ho.

Jednoduchý praktický príklad: Postačí nám verejne prístupný (spoločný) priečinok, do ktorého môže ktokoľvek vstúpiť, čítať i zapisovať.

Postup bude nasledovný:

  • v ponuke Datasets zvolíme vytvorené diskové pole (pool-data) a v ňom vytvoríme oddiel (Add Dataset) – tento oddiel môžeme chápať ako priečinok;
  • meno priečinku i meno zdieľania bude „public“, predvoľby nastavíme na SMB a necháme začiarknutú aj voľbu na vytvorenie zdieľania (Create SMB Share);
  • v ponuke Shares už nájdeme zdieľanie s názvom „public“, do ktorého má prístup ktokoľvek, a to s plnými právami – overiť to môžeme cez Edit Share ACL – pre everyone@ sú práva na hodnote FULL;
  • ešte je potrebné skontrolovať práva pre samotný priečinok cez Edit Filesystem ACL – mali by tam byť všetci vytvorení používatelia (builtin_users) s právom „Modify“.

Vytvorenie účtu používateľa

Hoci sme pridali právo všetkým aj na zdieľaní a aj na priečinku, nemá sa tam kto dostať, pretože sme nevytvorili žiadneho používateľa. Moderné OS (aj na strane servera – TrueNAS a aj na strane klienta – Windows 11) zakazujú anonymné prístupy a vynucujú používanie nejakého používateľského účtu. Hoci je to možné zmeniť zásahom do nastavení systému, radšej vytvorme používateľa:

  • v ponuke Credentials → Users dáme pridať používateľa „public“, povolíme mu prístup len na SMB a heslo mu môžeme dať tiež „public“;
  • teraz sa už môžeme z Windows pripojiť zadaním cesty \\truenas-priezvisko.local\public (do Prieskumníka) – bude potrebné zadať meno a heslo.

Zdieľaný priečinok nájdeme v hostiteľskom súborovom systéme (v TrueNAS) v priečinku /mnt/pool-data.

Zdieľania viacerých oddielov pre viacerých používateľov

V komplexnejšej situácii už potrebujeme rozlišovať rôznych používateľov, nazdieľané budú rôzne priečinky a každý bude mať definované iné práva.

Praktický príklad: Rozlišujme žiakov, učiteľov a správcu servera. Majme verejný priečinok, z ktorého môže čítať každý, no zapisovať môže len správca. Do učiteľského priečinka majú prístup len učitelia a do žiackeho priečinku žiaci i učitelia. Predpokladajme, že žiaci budú ukladať veľmi podobné súbory a väčšina ich súborov budú texty v programovacom jazyku a štruktúrovaných formátoch (JSON, YAML, XML). Zabráňme zaplneniu celého disku.

Najskôr by sme mali zmazať oddiel i používateľa z predošlého príkladu. Potom cez Credentials → Users vytvoríme nových používateľov: admin, ucitel, ziak – každému povoľme len SMB prístup, aby sa nemohli prihlasovať cez webové rozhranie servera, ani jeho SSH a podobne.

Teraz vytvoríme tri diskové oddiely. Všetkým trom nastavíme aj obmedzenie veľkosti súborov (diskovú kvótu). Keďže žiaci budú ukladať podobné súbory, zapneme ich oddielu deduplikáciu súborov. Vieme, že ich súbory budú prevažne textové, preto nastavíme účinnejšiu kompresiu. V Datasets → pool-data teda vytvoríme oddiely a následne im nastavíme prístupové práva:

  • public – kvóta 50 GiB, tu bude mať admin plný prístup (Full Control), ostatní (builtin_users) len čítanie (Read);
  • ucitel – kvóta 50 GiB, tu bude mať ucitel právo čítania a zápisu (Modify), musíme odstrániť builtin_users;
  • ziak – kvóta 20 GiB, zapnutá deduplikácia, kompresia zmenená na ZSTD-3, tu bude mať ucitel i ziak právo čítania a zápisu (Modify), musíme odstrániť builtin_users.

Prečo nedávame učiteľovi plné práva (Full Control), ale len právo na zmenu (Modify)?

Pri bežnom používaní nepotrebuje meniť prístupové práva priečinkov. Mohol by omylom alebo z nevedomosti zmeniť prístupové práva tak, že by sa tam už nedostali oprávnení používatelia.

Prečo sme nedali prístup správcovi do všetkých oddielov, napríklad učiteľského?

Dá sa predpokladať, že nebude potrebovať mať prístup k údajom učiteľov (a ak áno, môže si ho prideliť dodatočne). Tým, že nebude mať právo prístupu, nemôže učiteľom omylom niečo zmazať, prípadne, pokiaľ by mal vo svojom počítači malvér, nebude mať dosah aj na učiteľské úložisko.

Ak sme pri vytváraní oddielov nechali vytvoriť aj zdieľanie, nájdeme všetky tri zdieľania v ponuke Shares. Všetky majú nastavené Share ACL na hodnotu FULL pre @everyone, čo vyhovuje, pretože práva sme obmedzili v súborovom systéme (Filesystem ACL).

Prečo neobmedzíme práva aj v samotnom zdieľaní (Share ACL)?

Funguje tu princíp najprísnejšieho prieniku. Reálne práva sú prienikom práv zdieľania a práv v súborovom systéme – platí vždy prísnejšie pravidlo (zákaz má prednosť pred povolením). Pokiaľ by sme obmedzovali na oboch miestach, ťažšie by sa hľadal problém, ak by niečo nefungovalo podľa očakávaní a každú zmenu by sme museli vykonávať dvojmo. Preto je v praxi jednoduchšie prísne nastavovať súborové práva (Filesystem ACL) a práva zdieľania (Share ACL) nechať bez obmedzení.

Pripojenie Windows klienta

Teraz sa už môžeme z Windows pripojiť zadaním cesty \\truenas-priezvisko.local\ (do Prieskumníka) a zvolením požadovaného zdieľaného priečinka. Operačný systém však nepýta žiadne meno a ani heslo, v čom je problém? K tomuto zdroju sme sa už totiž pripojili!

Operačný systém eviduje SMB spojenie na server truenas-priezvisko.local pod menom „public“ a nepýta sa znovu na meno a heslo. Toto spojenie sa zruší pri reštarte OS, no môžeme ho zmazať aj príkazom (ako bežný používateľ, nie správca) – najskôr zobrazíme spojenia príkazom net use a potom ich zmažeme, napr. net use \\truenas-priezvisko.local\public /delete

Je možné pripojiť sa do každého zdieľaného priečinka iným menom?

Áno, ale je nutné využiť malý trik – vytvoriť pre ten istý súborový server viaceré DNS mená, napr. nas-ucitel.ssnd.sk, nas-ziak.ssnd.sk. Windows to bude chápať ako rôzne servery a pre každý bude zvlášť pýtať prihlasovacie údaje.

Ak som v minulosti dal vo Windows zapamätať meno a heslo k sieťovému priečinku, už si ho pamätá aj po reštarte a nemôžem zadať iné. Ako ho prinútim zabudnúť ho?

Je potrebné spustiť aplikáciu „Správca poverení“ a tam odstrániť uložené údaje.

Nastavenie práv pre vnorený priečinok

Praktický príklad: V riešení minulého príkladu pokračujme ďalej. Do zdieľaného priečinku public môže zapisovať len správca. No chceli by sme v ňom mať špeciálny priečinok „upload“, kam by mohol zapisovať ktokoľvek.

Túto situáciu môžeme riešiť dvoma spôsobmi:

  1. Cez priečinok: V oddieli public vytvoríme priečinok upload a nastavíme mu práva zápisu pre všetkých používateľov. Toto dokážeme priamo zo svojho PC, keď sa cez SMB pripojíme ako správca. Stačí vytvoriť priečinok a cez jeho vlastnosti povoliť právo zápisu pre builtin_users.
  2. Cez vnorený oddiel: V oddieli public vytvoríme vnorený oddiel upload. V tomto prípade môžeme nastaviť aj samostatnú kvótu, iný typ kompresie či iný stav deduplikácie. Nevytvárame však samostatné zdieľanie (Share)!