Nastavenie Samba servera pre zdieľanie súborov na Linuxe

V tomto článku som sa rozhodol popísať postup, ako spojazdniť Samba server na Linuxových operačných systémoch. Samba je softvér, ktorý slúži na zdieľanie priečinkov a súborov a podporujú ho všetky Unixové systémy ako sú Linux, Solaris, AIX a BSD vrátane Mac OS X Serveru od Apple. Samba je ale veľmi komplikovaná téma, ktorá určite nespadá do kategórie mierne pokročilých užívateľov, a preto sa tento článok pokúsim čo možno najviac zjednodušiť, aby bol zrozumiteľný aj bežnému používateľovi.

Jeden z predchádzajúcich článkov som venoval téme nastavenia VPN na Linuxe. Táto téma na to čiastočne nadväzuje, pretože takmer vždy, keď potrebujete nastaviť VPN, podmienkou je aj zdieľanie súborov medzi užívateľmi vo VPN bez ohľadu na to, aký OS používajú. Pod Linuxami sa o toto stará Samba. Umožňuje zdieľanie súborov a tlačiarní aj medzi rôznymi operačnými systémami, vrátane Windows. Keďže sa v čase písania tohto článku nenachádzal na internete žiadny komplexný návod pre prácu so Sambou a NTFS diskami, rozhodol som sa, že ho napíšem sám.

Pre začiatok budete potrebovať aspoň nejaké vedomosti o prístupových právach súborov v Unixových systémoch (sem patria aj Linuxy). Tejto problematike sa venujem v článku Prístupové práva súborov v Unix / Linux OS, odporúčam vám teda aspoň zbežne si ho prebehnúť. Tieto informácie budete potrebovať, aby ste porozumeli ďalším krokom, no ak vám je v tejto oblasti všetko jasné, môžete sa pokojne pustiť do konfigurácie Samby.

 

Nastavenie Samby

Najskôr popíšem, akým spôsobom nastavíte Sambu pre jednoduché zdieľanie.

  1. Otvorte si Terminál a napíšte do neho:
    sudo pluma /etc/samba/smb.conf alebo sudo gedit /etc/samba/smb.conf
    Pluma a Gedit sú dva z najpoužívanejších editorov na úpravu textových súborov. Je možné, že váš systém obsahuje defaultne iný textový editor, vtedy jednoducho nahraďte pluma resp. gedit názvom vášho editoru.

  2. Po zadaní príkazu si od vás systém vypýta heslo pre SuperUsera, zadajte ho a potvrďte enterom.

  3. Otvorí sa vám textový editor a v ňom konfiguračný súbor pre Sambu. V tomto súbore sa nastaví celé zdieľanie. Pridajte tam nasledovný kus kódu a zmeňte ho podľa ďalších pokynov:

    [income]
    comment = Incoming folder
    path = /media/Data/Incoming
    force group = uzivatel
    writable = yes
    public = yes
    guest ok = yes
    guest only = yes
    browsable = yes

    [income]
    Parameter income v hranatých zátvorkách predstavuje názov pod ktorým bude reprezentovaný váš priečinok v sieti. Môžete ho ľubovoľne zmeniť.

    comment = Incoming folder
    Toto je len komentár pre človeka, ktorý konfiguruje Samba server a nikde inde sa nezobrazuje. Tento príkaz je možné úplne vynechať.

    public, guest ok, guest only
    Tieto príkazy pri jednoduchom zdieľaní neodporúčam meniť. Zabezpečujú to, že sa na vami zdieľaný priečinok môžu pripojiť len ľudia s účtom Guest.

    force group = uzivatel
    Namiesto uzivatel zadajte názov vášho užívateľského účtu s akým sa prihlasujete do Linuxu. Prípadne zadajte v Termináli príkaz groups a ten vám vypíše zoznam skupín, aké sú v danom systéme, každý užívateľ pritom musí patriť do nejakej skupiny. Vyberte teda z tohto zoznamu takú skupinu, do ktorej patrí aj váš užívateľský účet. Windowsový disk totiž neskôr pripojíme s takými právami, že naň môžu zapisovať len vlastník a členovia danej skupiny (práva 775).

    writable = yes
    Keďže popisujem jednoduché zdieľanie, kde majú všetci užívatelia právo ľubovoľne meniť obsah priečinku, je tu parameter writable = yes. Ak máte nastavené writable = yes užívatelia, s ktorými priečinok zdieľate, môžu daný priečinok ľubovoľne meniť, nahrávať doň nové súbory, či ľubovoľné súbory mazať. Ak nechcete, aby niekto menil obsah tohto priečinka, zmeňte yes na no.

  4. Okrem týchto zmien vyhľadajte v otvorenom konfiguračnom dokumente položku wins support nastavte ju nasledovne:
    wins support = yes
    Táto možnosť zmení Samba server na WINS server. Je pravdepodobné, že vám zdieľanie pôjde aj bez tejto možnosti, ale odporúčam ju zmeniť. Umožní vám to zdieľanie aj medzi Windows užívateľmi.

Po týchto zmenách v konfiguračnom súbore, treba Sambu reštartovať nasledovným príkazom v termináli, aby sa zmeny aplikovali:

sudo restart smbd

Prípadne môžete reštartovať celý PC, má to rovnaký efekt.

Po reštarte služby, či PC by malo zdieľanie bez problémov fungovať, ak niečo nejde, ešte raz si prejdite všetky kroky. Screenshot môjho konfiguračného súboru Samby je na (Obr. 1).

Obr. 1: Konfiguračný súbor Samby (smb.conf).

 

Nastavenie zdieľania na NTFS partícii

Klasickú Sambu máme snáď úspešne nakonfigurovanú a zdieľame priečinky či dokumenty medzi užívateľmi v našej seti. Existuje ale dosť špecifický prípad, ktorému sa venujem v nasledujúcej časti.

Scenár je nasledovný:
Máte na počítači dual boot, čiže používate 2 alebo viac operačných systémov. Jeden z týchto systémov je Windows a druhý ľubovoľná distribúcia Linuxu. Na Windowse vám zdieľanie v rámci VPN funguje a radi by ste ho nastavili aj v Linuxe.

Tak teraz trochu teórie… Ak ale chcete zdieľať priečinok, ktorý sa nachádza na jednej z Windows-ových partícií (Partície chápte ako jednotlivé oddiely disku. Vo Windows je to napríklad disk C, disk D…), nastáva tu problém. Vaše Windows partície sú s najväčšou pravdepodobnosťou formátované na systém NTFS (pri Windows 7 a novších je to nutnosť). Súborový systém NTFS ale neumožňuje prácu s právami ako väčšina iných súborových systémov. Linuxy používajú spravidla súborový systém Ext3, Ext4. Takže keď zazdieľate priečinok z Windowsovej partície cez Sambu, ľudia doň nebudú môcť vstúpiť, napíše im totiž hlášku, že na to nemajú práva. Keď máte túto NTFS partíciu už pripojenú v Linux systéme, nedajú sa na nej meniť práva pre priečinky pomocou príkazu chmod ako pri ostatných priečinkoch na Linuxových partíciách. Práva treba v tomto prípade nastaviť pri pripájaní disku do OS Linux.

 

Kúzlo teda spočíva v správnom pripojení partície, toto realizujeme nasledovným príkazom:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/volaco /mnt/volaco

Tento príkaz vám pripojí NTFS partíciu so všetkými právami pre priečinky a podpriečinky.

Namiesto /dev/volaco treba zadať číslo partície. Napr.: /dev/sda1.

Číslo partície zistíte nasledovným príkazom:

sudo fdisk /dev/sda
Po zadaní príkazu a ak si systém vypýta, tak aj administrátorského hesla, zadajte písmeno „p“. Toto vám vypíše partície na prvom disku. Pri bootovateľnej partícii je znak *, toto je teda vaša systémová partícia Windows. Ak máte viac pevných diskov, rovnaký príkaz platí aj pre ostatné disky, ale pokračuje to ďalej písmenami b, c, d… Takže príkaz pre ďalší pevný disk je: sudo fdisk /dev/sdb

Časť príkazu /mnt/volaco zodpovedá umiestneniu, kam chcete zadaný disk pripojiť. Odporúčam vám ísť do Linuxového priečinku /mnt a vytvoriť si tu adresár pre každý disk, ktorý chcete pripájať. Ja tu mám napríklad adresáre Data a Win7. Po zadaní tohto príkazu budete mať teda pripojený disk a jeho obsah sa bude nachádzať vo vašom adresári /mnt/volaco. Samozrejme môžete použiť ľubovoľný adresár, ale pozor, lebo všetci užívatelia musia mať právo vstupu do tohto priečinku.

 

Automatické pripájanie diskov po štarte systému

Zadávať príkaz do Terminálu po každom spustení systému je ale dosť nepohodlné. Popíšem teda postup, ako nastaviť, aby sa disky pripojili automaticky po štarte systému. Treba správne nakonfigurovať súbor, ktorý spravuje partície fstab.

  1. Potrebujete UUID disku, ktorý chcete pripojiť, toto získate zadaním nasledovného príkazu do Terminálu:

    sudo blkid

    Uvidíte svoje disky a poznačte si UUID tých diskov, ktoré chcete pripájať po štarte systému.

  2. Následne zadajte príkaz:

    sudo pluma /etc/fstab resp. sudo gedit /etc/fstab

    Otvorí sa vám textový editor, dajte si pozor, aby ste v ňom nič nezmenili, inak vám nemusí nabootovať systém. Chceme len na jeho koniec pridať pár riadkov.

  3. Na koniec otvoreného súboru dopíšte nasledovný riadok:

    UUID=98A0B713A0B6F73A /media/Win7 ntfs-3g rw,auto,users,exec,nls=utf8,umask=002,gid=1000,uid=1000 0 0

    Namiesto môjho UUID zadajte svoje, ktoré ste zistili v predchádzajúcom kroku.

    Cesta /mnt/Win7 predstavuje cestu, kde vám pripojí diskový oddiel. Túto sme nastavovali už skôr, zadajte ju teda tak ako predtým.

    V príkaze sa nachádza časť umask=002, táto zabezpečí, že všetci užívatelia v skupine budú mať práva rwx, tí mimo skupiny majú práva len na čítanie. To znamená, že budú môcť ľubovoľne zapisovať, či meniť obsah na takto pripojenom disku. Viac o maskách sa dočítate na tomto webe.

    Ostatné parametre príkazu neodporúčam meniť, ak si nie ste istý čo robíte.

    Pred príkaz môžete zadať aj komentár pomocou mriežky, obdobne ako na mojom screenshote (Obr. 2).

  4. Po uložení a zavretí súboru si otestujte jeho správnosť nasledujúcim príkazom:

    sudo mount -a

    Ak ste predtým už pripájali disky konzolovým príkazom, odporúčam ich najskôr odpojiť (unmount). Ak sa vám po zadaní tohto príkazu do Terminálu, správne pripoja vaše Windows partície, všetko je v poriadku, ak nie, spravili ste chybu v kroku 3.

 

Obr. 2: Súbor fstab. V červenom rámiku sú pripájané Windows-ové partície.

 

Ak máte Windows partície správne pripojené, môžete na nich nastaviť zdieľanie cez Sambu rovnakým postupom ako je hore v tomto článku.

 

Možné problémy

Ak sa rozhodnete pripájať aj systémovú partíciu OS Windows, alebo ľubovoľného iného OS, nemôžete používať hibernáciu systému. Hibernácia je totiž proces, kedy sa všetky bežiace procesy uložia na diskový oddiel, spravidla na systémovú partíciu. Po zobudení PC z hibernácie sa všetky programy opäť zobudia, tak ako boli pred uvedením do hibernačného stavu. PC sa pri tomto procese normálne vypne. Pri takto hibernovanom stroji má ale Linux problém s pripojením systémovej partície Windows resp. iného hibernovaného OS. Riešením je hibernáciu vôbec nepoužívať alebo jednoducho nemountovať systémovú partíciu, ale len logické partície. Rôzne Linuxové distribúcie sa k neúspešne mountnutom disku stavajú rôzne. Väčšinou sa systém Linux normálne spustí, len vypíše hlášku o neúspešne mountnutom systéme. Niektoré distribucie však nemusia vôbec dovoliť nabootovať takýto systém.

Nemýľte si ale hibernáciu a spánok. Pri spánku sa tieto procesy ukladajú do RAM a nie na disk. Systém sa vtedy nevypne, zostane len uspatý, po stlačení akejkoľvek klávesy sa prakticky okamžite preberie a dostane do stavu v akom bol pred uspatím. Pri spánku musí byť PC neustále napájaný prúdom, napríklad po vybratí baterky, by sa údaje z RAM okamžite stratili. Pri hibernácii sú procesy „bezpečne“ uložené na disku.

Zanechajte komentár