Téma Windows klient/server - Linux server je veľmi populárna a preto by som vám rád ozrejmil túto problematiku, kedy mnohí užívatelia a administrátori potrebujú zdieľať svoje súbory, tlačiarne a pod., medzi Linuxom a Windowsom. Týmto vás chcem tiež privítať pri úvodnej časti seriálu o sambe.
V dnešnej časti si načrtneme použitie samby ,,len" ako klienta, kde si pripojíme naše zdielané adresáre vo Windowse s Linuxom. Dúfam, že sa vám tento seriál bude páčiť a zúžitkujete všetky poznatky, o ktoré sa s vami veľmi rád podelím :). Myslím teda, že môžeme ísť na to a na ,,zahriatie" začneme stručným prehľadom, čo je to samba a aké sú jej možnosti. Prajem príjemné čítanie...
Čo je Samba?
Samba je softvér, resp. softvérovy balík, pomocou ktorého možete zdieľať súbory a tlačiarne s Windows klientom alebo serverom v sieti. Od verzie 3 však neposkytuje len tieto 2 služby, samba totiž môže byť integrovaná s doménou Windows Server, môže slúžiť ako PDC (Primary Domain Controller) alebo tiež ako Backup Domain Controller. Tieto serverové služby samby si priblížime v ďalších dieloch tohto seriálu, taktiež bude osobitná pozornosť venovaná dielu, kde si ukážeme ako pridať náš samba server k existujúcej doméne ADS (Active Directory Service, uvádza sa tiež len ako AD) s pomocou OpenLDAP.
Samba server pozostáva z 2 resp. 3 démonov, ktorými sú:
- nmbd - spracúva všetky name registration a resolution requesty ako aj všetky UDP spojenia. Tento démon by mal byť spustený ako prvý.
- smbd - spracúva všetky služby TCP/IP spojenia pre súborove a tlačové operácie. Tiež spravuje lokálnu autentifikáciu. Tento démon by mal byť spustený ako druhý v poradí, hneď po nmbd.
- winbindd - tento démon by mal bežať v prípade, že je samba začlenená do Windows NT alebo ADS domény.
Pre vzájomnú komunikáciu v sieti, využíva samba TCP/IP protokol inštalovaný na hosťovskom servri, konkrétne to je protokol zvaný SMB (Server Message Block), ktorý má veľmi dlhý vývoj. Na ňom je postavený protokol CIFS (Common Internet File System), ktorý bol zavedený Microsoftom a s ktorým samba spolupracuje. Na konci článku nájdete odkazy na zaujímavé stránky o protokole CIFS/SMB. Len stručne popíšem, čo protokol SMB zabezpečuje.
SMB pracuje na aplikačnej vrstve sieťového protokolu a poskytuje už spomínaný zdieľaný prístup k súborom, tlačiarňam a sériovým portom medzi jednotlivými uzlami v sieti. Protokol CIFS sa stará o zdieľanie súborov. Vo Windowse beží SMB ako vrchná vrstva protokolu NetBIOS. SMB takisto poskytuje autentifikačný mechanizmus, o ktorom bude reč v ďalších častiach seriálu.
Myslím, že na úvod by to stačilo a pustíme sa do samotnej inštalácie samby.
Inštalácia
Keďže na svojom desktope používam Gentoo už pár rokov, všetky uvedené inštalačné postupy budú uvádzané práve pre túto distribúciu. Pre ostatné package-like distribúcie ako je Debian, *buntu a pod. si balíčky určite vyhľadáte na internete ;)
Pri inštalácii samby máme v Gentoo k dispozícii viacero USE flagov, ktoré bude dobré, ak si povolíme už hneď na začiatku, aby sme sa nabudúce vyhli rekompilovaniu samby.
Nasledujúce USE flagy si teda pridajte do súboru /etc/portage/package.use, prípadne globálne do súboru /etc/make.conf, do ktorého by ste si mali pridať aj USE flag samba:
- acl - zahŕňa podporu pre Kerberos a povoľuje nám Access Control Lists (ACL)
- ads - podpora pre AD
- automount - povoľuje nám použiť auto-moutnutie shares cez /etc/fstab použitím filesystému smbfs (stará metoda) alebo cifs (nová)
- cups - podpora pre Common Unix Printing System, teda tlačové služby
- kerberos - pridáva podporu Kerberos pre AD
- ldap - podpora pre Lightweight Directory Access Protocol (LDAP), ktorý nám bude treba neskôr pri použití s AD
- pam - zahŕňa podporu pre autentifikačné moduly - pluggable authentication modules (PAM)
- swat - podpora pre Samba Web Administration Tool (SWAT), čo je GUI pre administráciu a konfiguráciu samby
- winbind - podpora pre windbind démon
Ak už máme naše USE flagy nastavené, možeme pustiť emerge samba. Tým sa nám samba skompiluje a nainštaluje pre použitie ako aj klient, tak aj server. My v dnešnej časti využijeme len klientskú stránku samby.
Nastavenie jadra
Ak chceme pripájať zdieľané adresáre, musíme si do jadra zakompilovať podporu pre SMB a príp. aj CIFS (odporúčam). Vojdeme teda do konfigurácie jadra, prejdeme na položku File systems, ďalej Network File Systems a tu si zakompilujeme, buď priamo do jadra, alebo ako modul položky SMB file system support a CIFS support. SMB je už v najnovšom jadre označená ako OBSOLETE, teda ako ZASTARANÁ, preto - ako môžete vidieť na screene - som si zakompiloval iba podporu pre CIFS. Mimochodom, použité jadro je 2.6.26-rc8.
Skompilujeme jadro, reštartujeme počítač a nabootujeme náš nový kernel, príp. si musíme ešte dodatočne načítať skompilované moduly. Žiadna ďalšia konfigurácia samby pre účely dnešného dielu nie je potrebná ;)
Pripojenie zdieľaných adresárov (shares)
Poznámka: všetky príkazy pre pripájanie shares vykonávame ako root.
Vytvorenie nového samba užívateľa
Pre pridanie samba usera nám poslúži príkaz smbpasswd, príklad:
smbpasswd -a <user>
namiesto "user" si samozrejme zvolíte nejakého existujúceho užívateľa (na linuxovom stroji) a následne po odklepnutí príkazu zadáte heslo :). Je to v podstate obdoba unixového príkazu passwd.
Pripojenie share pomocou CIFS (nová metóda)
Poznámka: ak máte verziu samby >= 3.0.25 musíte emergnut ďalší balík mount-cifs. Pripojenie sharu následne vykonáme príkazom:
mount -t cifs //<domain name alebo IP adresa>/<zdieľaný adresár> /<mountpoint> -o "username=<uživateľ>,uid=<uid>,iocharset=<kódovanie>,dir_mode=0770,file_mode=0660"
Položky uzavreté v <> si už každý upraví podľa potrieb.
Pripojenie share pomocou SMB (stará metóda)
Pripojenie sharu sa v tomto prípade realizuje príkazom:
smbmount //<domain name alebo IP adresa>/<zdieľaný adresár> /<mountpoint> -o username=<užívateľ>,password=<heslo>,uid=1000,umask=000
Položky uzavreté v <> si každý upraví podľa potrieb.
Následné odpojenie share sa vykonáva klasicky, príkazom umount <mountpoint>.
Môžete síce použiť obe možnosti pripojenia shares, smbmount však už naďaľej nie je ofic. podporovaná metóda a nahrádza ju mount.cifs.
/etc/fstab
Ak máte nejaký stroj, ktorý je stále online a nechce sa vám zakaždým písať tento zdĺhavý príkaz, možete si share nechať pripájať automaticky pri štarte systému a teda pridať si ďalší riadok do /etc/fstab, ktorý môže vyzerať nasledovne:
//<domain name alebo IP adresa>/<zdieľaný adresár> /<mountpoint> cifs auto,credentials=/home/user/smbcredentials,iocharset=utf8,uid=1000,umask=000,user 0 0
Keďže /etc/fstab môže čítať hocijaký užívateľ, nielen root, z bezpečnostných dôvodov nie je vhodné mať zapísané heslo priamo v tomto súbore, preto máme vytvorený súbor, tzv. credentials file (doslovný preklad je "osobné doklady", čo je vcelku výstižné :) ), v našom prípade to je /home/user/smbcredentials, ktorý má nasledovný obsah:
username=uzivatel
password=heslo
a keďže nechceme aby nám tento súbor čítal hocikto, nastavíme mu atribúty, aby ho mohol čítat a zapisovať doň jedine root:
chmod 600 /home/user/smbcredentials
Ak nám ani takéto zabezpečenie nestačí, pretože sme paranoidný :), môžeme tento súbor urobiť skrytým (ako na to, dúfam nie je potrebné vysvetľovať). Následne vyskúšame, či nám všetko funguje tak, ako má príkazom:
mount -a
po jeho vykonaní by sme mali mať pripojený náš Windows share. Ako zdielať nejaký linuxový share adresár sa dozviete v niektorom budúcom dieli, kde si predstavíme serverové možnosti samby.
Na záver ešte ozrejmenie pojmov:
- username, password - meno,heslo windows/samba share užívateľa, ktorého sme si vytvorili
- iocharset - nastavuje aké kódovanie sa má použiť (u mňa voľba utf8 zatiaľ vždy fungovala korektne)
- uid - používa sa na nastavenie vlastníctva nášho mountu
- umask - nastavuje základné oprávnenia pre všetky súbory, ktoré máme mountnuté. Umask je v podstate opozitum pre chmod a jeho hodnotu zistíme tak, že odpočítame hodnotu chmod od 777, teda napr. v našom prípade je umask = 000 teda chmod = 777.
Možno sa pýtate, ako zistiť, aké shares si vlastne môžem pripojiť? Na to slúžia buď nižšie spomínané GUI nástroje alebo príkaz smbclient. Príklad použitia:
smbclient -L <hostname/IP adresa>
Po zadaní uvidíme výpis podobný tomuto:
GUI nástroje
Prácu s konfiguráciou a administráciou samby nám môžu výrazne uľahčiť rôzne GUI nadstavby, ktoré tu ale nebudem popisovať, pretože ich je podstatne veľa. Z tých známejších len spomeniem smb4k alebo SWAT (nie, nemám na mysli protiteroristickú jednotku :) ) - jeho nastavenie si trochu opíšeme v niektorej ďalšej časti seriálu. Prehľadávať sieť cez smb:// protokol môžete aj cez Konqueror, v prípade KDE, resp. u Gnome rovnako dobre poslúži Nautilus. Kompletný prehľad GUIs pre sambu nájdete tu.
Záver
Myslím, že na úvod a zoznámenie sa so sambou tento diel splnil svoj účel, teda aspoň dúfam :). Do ďalšej časti chystám začleniť tlačové služby a zrejme aj niečo navyše, hlavne sa pokúsim pridať viac obrázkov, ak to samozrejme bude možné, nechajte sa preto prekvapiť :). Možno, že viacerím z vás nepriniesol tento úvodný diel nič nové, no kto má záujem bližšie sa zoznámiť s ďalšími možnosťami samby, resp. ho zaujímajú podrobnosti o protokole SMB, veľmi dobre poslúžia manuálové stránky príkazov a tiež aj oficiálne stránky projektu, na (nielen) ktoré odkazujú odkazy nižšie. Ďakujem vám teda, ak ste článok dočítali až sem a páčil sa. Ďalší diel je už v príprave, takže jasajte a tlieskajte :).
Akékoľvek pripomienky adresujte na môj mail, prípadne do komentárov. Ak sa vám niečo nepáčilo, chcete viac podrobností o niečom a pod. stačí, keď sa vyjadríte a ja to rád zahrniem do pokračovania.
Odkazy
SMB protokol
The Official Samba 3.2.x HOWTO and Reference Guide
Samba: An Introduction
CIFS Technical Reference
chmod 600 /home/user/smbcredentials"
to by ale musel byt root vlastnikom toho suboru, cize najskor
chown root /home/user/smbcredentials