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).
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ů.
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.
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 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
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
-L jmeno_stroje vypíše
sdílené prostředky serveru. Rovněž se připojujeme pomocí něho k sambovskému serveru. smbclient //jmeno_serveru/jmeno_prostredku -U
Domain=[LAB.FI.MUNI.CZ] OS=[Unix] Server=[Samba 3.0.22]
Sharename Type Comment
--------- ---- -------
homes Disk Home directories
spravce Disk spravcuv home
IPC$ IPC IPC Service (Thoe)
ADMIN$ IPC IPC Service (Thoe)
Domain=[LAB.FI.MUNI.CZ] OS=[Unix] Server=[Samba 3.0.22]
Server Comment
--------- -------
THOE-ALPHA Thoe
Workgroup Master
--------- -------
LAB.FI.MUNI.CZ THOE-ALPHA
smbpasswd user_name) nebo vytvoření (smbpasswd -a user_name) Samba uživatele.
using configfile = /etc/samba/smb.conf Processing section "[tmp]" Processing section "[homes]" Processing section "[spravce]" Samba version 3.0.22 PID Username Group Machine ------------------------------------------------------------------- Opened /var/cache/samba/connections.tdb Service pid machine Connected at ------------------------------------------------------- spravce 5912 10.0.30.2 Sat Nov 11 12:44:38 2006 tmp 5913 10.0.30.2 Sat Nov 11 12:45:13 2006 homes 5910 10.0.30.2 Sat Nov 11 12:43:47 2006 No locked files
smbmount //<server>/<prostredek> /<mount_point>
-o <parametry> username=<arg> password=<arg> File systems --->
Network File Systems --->
<*> SMB file system support (to mount Windows shares etc.)
<*> CIFS support