Samba

Michal Vaverka, xvaverka@fi.muni.cz


Obsah


Co to je Samba a k čemu slouží

Samba je software, který umožňuje linuxovému nebo unixovému systému sdílet v síti soubory a tiskárny s windowsovými počítači. Nosným protokolem pro komunikaci mezi počítači je používán nejčastěji protokol TCP/IP. SMB neboli "Server Message Block" je službou nesenou na tomto protokolu. Linuxový počítač je z pohledu sítě viděn jako jedna z windowsovských stanic, rovněž jeho disky a tiskárny lze sdílet stejným způsobem jako disky a tiskárny windowsovského počítače.

Dnes jsou k dispozice verze Samby 2.2.x a 3.0.x.

SMB (Server Message Block)

SMB je starší obecný protokol pro sdílení souborů, tiskáren, seriových portů a dalších (např. pojmenovaná roura) mezi počítači. Microsoft implementuje vlastní formu SMB protokolu k poskytování sdílení ve starších verzích Windows.

CIFS (Common Internet File System)

Toto je nové jméno pro SMB. CIFS poskytuje lepší součinnost s novějšími servery jako Windows Server 2003 a které jsou optimalizovány pro současnou verzi SMB/CIFS protokolu. CIFS je implementován v jádře 2.6 nebo pomocí patche pro jádro 2.4.


Součásti Samby

Samba se v podstatě zkládá ze dvou nebo tří démonů.
nmbd - zajišťuje službu převodu jmen LanManager serverů na IP adresy. Jeho činnost se podobá Inernetovskému DNS, i když je o mnoho jednodušší
smdb - tento démon je jádrem celého serveru. Jeho úkolem je komunikovat s klienty, zajišťovat jejich přihlášení a poskytovat služby přístupu na disk a k tiskárnám
winbindd - je potřeba pokud je Samba členem Windows NT4 nebo ADS domény.


Konfigurace

Konfigurace Samby je uložena v smb.conf, který je obvykle v adresáři /etc/samba/. Konfiguraci můžete povést přímo editací, tohoto souboru, nebo pomocí některého z grafických rozhraní. Nejznámější je SWAT (Samba Web Administration Tool).

Struktura smb.conf

Soubor smb.conf je rozdělen do sekcí a každá sekce může obsahovat různé parametry. V konfiguraci mohou být tři sekce s zvláštním významem. Jejich jména jsou přesně definována: [global],[homes] a [printers]

Příklad:

        [global]
        workgroup = lab.fi.muni.cz

        [homes]
        guest ok = no
        readable = no
    

Tento příklad je jednoduchá ukázka, kde v sekci global je nastavena pracovní skupina a pomocí sekce homes jsou zpřístupněny domovské adresáře uživatelů.

Pokud chceme vytvořit nejaký další zdroj sdílení, nadefinujeme si další sekci s vlastním názvem.

        [tmp]
        comment = adresar tmp
        path = /tmp
        browsable = no
        public = yes
        host allow = @lab.fi.muni.cz
    

Kde path označuje cestu ke sdílenému adresáři, browsable určuje, že adresář nebude vidět při vylistování dostupných zdrojů.


Sekce v smb.conf

Sekce [global]

Parametry, které jsou uvedeny v této sekci jsou uplatněny pro celý server nebo jako defaultní hodnoty pro ostatní sekce pokud v nich není daný parametr definován.

Dále je možné uvést různá nastavení, která se týkají NT Domén, a mnoho dalších (viz smb.conf(5)).

Sekce [homes]

Tato sekce slouží k nastavení parametrů pro sdílení domovských adresářů uživatelů. Většinou je sekce nastavena tak, aby nebyla vidět při listování sdílených adresářů. Parametr browseable = no

Sekce [printers]

Nastavuje sdílení tiskáren. Jsou sdíleny všechny tiskárny, které jsou uvedeny v souboru /etc/printcap. Parametry, které můžeme nastavit jsou analogické jako u sekce homes. Navíc je zde parametr printable = yes, který je speciální pro tuto sekci.

Ostatní sekce

Dále je možné definovat další sekce, které určují konkrétní data která jsou sdílena. Do hranatých závorek uvedem název sekce. Pak definujeme pomocí parametrů její vlastnosti. Několik možných parametrů:

Ostatní parametry viz smb.conf(5).


Řízení přístupu

Každý zdroj může být buď veřejný nebo může být poskytován pouze právoplatným uživatelům, kteří se prokáží platným heslem

Zpřístupnění zdroje pro všechny uživatele je možno nastavit parametrem public = yes. Uživatelé, kteří si budou chtít tent zdroj připojit nebudou muset zadávat své jméno a heslo.

Přístup s ověřením totožnosti může být problematický. Pro správnou funkci přihlašování musí Samba k zadaným autoritačním informacím nalézt odpovídající pár jméno/heslo v souboru /etc/passwd. Některé systémy mohou posílat chybné nebo žádné jméno uživatele nebo heslo převedené na velké znaky.

Klienti MS Windows mohou používat šifrovaná hesla jako část challenge/response autentizačního modelu nebo samostatně, nebo jako textový řetětec. Dnešní klienti windows implicitně používají kódované heslo.

Pokud je heslo kódované, může být zakódováno jedním ze dvou způsobů:

Dále je možné provést omezení adres klientů, kteří se mohou připojit k Sambou posktytovaným zdrojům. Je to možné určit pomocí parametrů hosts allow a hosts deny. Je-li povolených nebo zakázanych klientů pouze několik, lze je jednoduše vyjmenovat. Uvedeme-li jako první znak @, jedná se o pracovní skupinu a bude povolen přístup všem počítačům v ní.

        hosts allow = doto-beta, @lab.fi.muni.cz
        

Typy serverů

Samba verze 3, může vystupovat v sítích Microsoft jako tři typy serverů.


Synchronizace hesel

Sambu je možné nakofigurovat tak, aby bylo možné měnit heslo z Windows a zároveň docházelo k jeho nastavení jako sytémového. Používá se k tomu PAM modul pam_smbpass.so, který se stará o synchronizaci mezi sambovským heslem a klasickým heslem v Unixu.

V konfiguraci Samby, nastavíme parametr unix password sync = yes a parametry passwd program, passwd chat, které definují kterým programem bude heslo měněno a jak bude vypadat interakce programu při změně.


SMB klient

Součástí Samby je i jednoduchý klient smbclient. Pomocí něj můžete zjišťovat zdroje, přenášet soubory, tisknout na vzdálených tiskárnách.

Seznam zdrojů poskytovaných daným serverm můžete snadno zjisti takto:

        smbclient -L server
    

kde server je jméno daného serveru

Chcete-li pracovat se zdoji ze serveru, spusťte klienta s parametrem určujícím zdroj

        smbclient \\server\zdroj
        smbclient \\server\zdroj heslo
    

Literatura