Samba

Jan Kučera, xatrix@fi.muni.cz


Obsah


Úvod

Samba je implementace SMB/CIFS síťového protokolu pod licencí GNU/GPL pro linux. Původně byla vyvinuta pro systém UNIX Andrewem Tridgellem, její současná verze je 3.0.23c. Nástroj je používan především pro vzdálený přístup k souborům (sdílení) včetně systémů MS Windows a přístupu k tiskárnám. Implementaci Samby můžeme najít na většině UNIX-like systémech, BSD variantách nebo i na Mac OS X (od verze 10.2). Jméno pochází z protokolu používaného MS Windows "SMB" (server message block). Programový balík obsahuje smbd, démon který zajištuje služby sdílení (disků i tiskáren) pro SMB klienty (jako je Windows, smbfs, smbclient). Dále obsahuje nmdb, který umožňuje procházení sdílených prostředků a NetBIOS nameserver (implementace NetBIOS protokolu).


Protokoly

SMB/CIFS

Server Message Block je síťový protokol na aplikační úrovni sloužící pro přístup k souborům, tiskárnám a dalším komunikacím mezi uzly v síti. Taktéž poskytuje autentizovanou komunikaci mezi procesy. Byl původně navržen Barry Feigenbaumem z IBM pro přístup přes lokální síť k souborům, ale hlavní modifikace byly provedeny Microsoftem, který propojil SMB protokol se síťovým manažerem a postupně přidával další funkce. SMB běžel nad protokolem NetBIOS, skrz který SMB komunikoval přímo s TCP/IP. V roce 1996 bylo SMB přejmenováno na Common Internet File System (CIFS) a byly přidány nové prvky jako např. podpora symbolických linků, podpora větších souborů.

NetBIOS

Network Basic Input/Output System umožňuje komunikaci mezi stroji v lokální síti. Poskytuje služby odpovídající relační vrstvě OSI modelu. Každý stroj běžící pod Windows má svoje NetBIOS jméno, které musí být jedinečné v síti a rovněž host name, jméno které využívá služby jako ftp, telnet, prohlížeče atp. NetBIOS bylo vyvinuto IBM v roce 1983 a původně podporovalo 80 strojů v jedné síti a postupem času se stalo standartem. Běží nad porty 137-139 podle typu služby, kterou obsluhuje. Jde o jmenou službu (port 137), komunikační službu (port 138) a port 139 slouží pro přenos dat.

WINS

Windows Internet Naming Service (WINS) je MS implementace NetBIOS Name Serveru (NBNS) pro Windows - pracuje jako jmený server v síti. Úložiště je dynamicky aktualizováno, takže si stroj pokud chce komunikovat s jiným ověří platnost jmena a adresy stroje. WINS servery si drží plné kopie ostatních strojů v dané oblasti, topologie tak není centrální, ale distribuovaná, což ulevuje síťovým linkám. Od Windows 2000 nejsou WINS doporučený - přechod k DNS a Active Directory.


Instalace a konfigurace

Instalace pro gentoo: USE="automount examples doc -cups" emerge samba -v

Konfigurační soubor smb.conf se nachází v /etc/samba/ a je rozdělen do podsekcí, kterí definují jednotlivé prvky pro sdílení. Vyjímku tvoří sekce [global] (obecné nastavení), [homes] (sekce pro připojení domovských adresářů), [printers] (varianta podobná s homes, jen pro tiskárny)

[global]
   workgroup = WORKGROUP //NT-Domain-Name nebo Workgroup-Name
   netbios name = NEPTUNE 
   server string = Notebook //Popisek pro server - ekvivalentni NT Description field

   security = share //Nastaveni urovne bezpecnosti - mozne varianty share, user, server, domain
   client code page = 852 //znakova sada klienta
   character set = ISO8859-2 // znakova sada systemu - plati pro server
   log file = /var/log/samba
   log level = 3
   username map = /etc/samba/smbusers //Mapovani smb jmen pro normalni ucty
   guest account = smbuser   //uzivatele s uctem navstevnika budou na stroji zalogovani jako smbuser
   hosts allow = 10.0. //omezi pristup jen pro lokalni sit
   printcap name = /etc/printcap //umisteni konf. souboru pro tiskarny
   load printers = yes //vsechny tiskarny v printcap name budou automaticky sdileny


//Verejne pristupny adresar
[public]
   comment = shared
   path = /tmp   //cesta ke sdilenemu prostredku
   guest ok = yes     //zdroj je pristupny bez hesla
   browseable = yes     //zdroj bude videt na vypisu smbclient -L

   
//Sdileni domovskych adresaru - uzivatel zada svoje jmeno a pokud se 
//prokaze heslem, dostane svuj domovsky adresar
[homes]
   comment = Home directories
   browsable = no
   writable = yes
   valid users 
   public = no

//Sdilene tiskarny   
[printers]
        path = /var/spool/lpd/samba #cesta, kam se budou spoolovat data
        printable = yes
        printing = lprng            #nastavení prikazu pro spravu uloh z fronty
        load printers = yes         #nacteni tiskaren z printcap souboru
        public = yes                #tiskarny jsou dostupne vsem
        printcap name = /etc/printcap

//Adresar Big_Franty_usera - neni videt ve vypise a pristu do nej ma jen uzivatel franta
[BFU]
   comment = Franta's home
   path = /home/franta
   valid users = franta
   public = no
   writable = yes
   printable = no
Samotné sdílení: V některých případech můžeme použít speciální proměnné:

Hesla v sambě:

Problém nastává hlavně se staršími Windows (3.11, W95, NT), která pracují s hesly ve formě plain textu. Zbylé verze už hesla kódují. V tomto případě máme 2 možnosti. Naučit ostatní Windows aby posílaly hesla v plaintextu nebo naučit sambu kódovat hesla.

encrypt passwords = yes - Samba je má nastaveno dekódování hesel
smb passwd file = /etc/smbpasswd - cesta k souboru s hesly pro Sambu.
unix password sync = yes - hesla v /etc/smbpasswd jsou automaticky synchronizována s hesly příslušných uživatelů (unixových, linuxových) serveru
null passwords = yes - Jsou povoleni klienti bez hesla (guest).

Pak už jen nastartovat samba server pomocí /etc/init.d/samba start


Nástroje

Odkazy a literatura