Programový balík Samba obsahuje především:
IBM PC-Network --------------------->---O | | | Token Ring -----O----> NetBeui ---- NetBios ------> SMB/CIFS | ^ ^ ^ | | | (NBT) | | | | | Direct Service Ethernet -------O | Tcp/Ip -------------O (NBIPX) | IPX/SPX -------->OVývoj protokolu SMB (Server Message Block) byl započat někdy začátkem osmdesátých let u firem Intel a Micro$oft. Hned od začátku byl navržen tak, aby používal aplikační rozhraní NetBios. NetBios byl zase vyvinut u IBM pro jejich hardware PC-Network. Tento HW již hodně dlouho neexistuje, nahradil jej Token Ring a hlavně Ethernet, nicméně NetBios přežil a pro přenos SMB protokolu se používá dodnes.
Teprve u Windows 2000 přišel Micro$oft s tzv. Direct Service, což není nic jiného než SMB přímo přez Tcp/Ip (resp. Tcp/Udp/Ip). Samba umí komunikovat jak pomocí vrstvy NetBios tak i přímo. Jen je třeba si uvědomit, že klienti na Win9x to napřímo neumí.
Někdy kolem roku 1996 Micro$oft přejmenoval SMB na CIFS (Common Internet Filesystem).
Jde vlastně o sadu protokolů, které zajišťují ohlašování služeb, autentifikaci,
autorizaci atd. V současné době je pod zkratkou SMB většinou označován samotný
protokol pro sdílení souborů, zatímco CIFS značí kompletní sadu protokolů.
Každý počítač má v rámci NetBiosu vlastní jméno, jehož zápis se liší od jmen
systému DNS (např. \\timothy\). Jména jsou dvojího druhu: skupinová a unikátní.
Skupinové jména mohou být sdílená a tak můžou být data vysílána pomocí multicastu
více stanicím. Name service si udržuje záznam o tom, která jména jsou použitá a na kterých IP
adresách se nacházejí - díky tomu můžou být požadavky směrovány skrze IP síť.
Dále je také zodpovědná za tvorbu a údržbu jmenných prostorů.
Name service může pracovat ve dvou módech: broadcast nebo point-to-point.
Broadcast mód funguje tak, ze chce-li klient znát adresu nějakého počítače,
zeptá se všech. Naopak pro PtP mód je třeba NetBios Name Server (NBNS), který vyřizuje
jednotlivé dotazy. Možné jsou i kombinované módy (Mixed mode podle RFC,
Hybrid mode jakožto výmysl M$).
Tato služba je víceméně přímočaře namapována na UDP. Jen pro rozesílání
datagramů skupinovým jménům mimo dosah broadcastu je potřeba speciální server,
NetBios Datagram Distribution Server (NBDD). Zde ale narážíme na smutný fakt,
že Samba se primárně snaží být kompatibilní s Windows. M$ udělal chybu ve svém
NBNS, NBDD i proto vůbec neimplementoval a Samba jej tudíž také nemá.
Existuje ale patch, který NBDD do Samby přidá - najdete jej na
Toto je opět přímočaře namapováno na TCP, jde tedy o potvrzovanou
službu se stálým spojením mezi dvěma stroji. Právě tato služba je používána
Sambou pro sdílení souborů.
2.2. NetBios nad TCP/IP (NBT)
NetBios zajišťuje v podstatě jakousi virtualni LAN (emulovanou PC-Network LAN).
Jak ma vypadat NetBios nad Tcp/Ip
rika RFC1001 (obecne koncepty) s RFC1002 (detailni specifikace). Každý počítač
má v rámci NetBiosu vlastní jméno, jehož zápis se liší od jmen systému DNS
(např. \\timothy\). NetBios zajišťuje tři klíčové služby:
www.landy.cx/
2.3. SMB
Zatímco některé CIFS protokoly jsou proprietární, pro ten hlavní je k dispozici
specifikace. Komunikace probíhá po blocích, které mají tuto strukturu:
Zřejmě z historických důvodů je většina odvozena od DOSového I/O rozhraní
(OPEN, CLOSE, ...). Dále obsahuje SMB příkazy pro obsluhu tiskáren a pár dalších
drobností. S tím jak se se protokol vyvíjel, měnil se a proto probíhá na začátku
spojení vyjednávání o verzi protokolu.
2.4. Přehled portů jednotlivých služeb
netbios-ns 137/udp #NETBIOS Name Service
netbios-dgm 138/udp #NETBIOS Datagram Service
netbios-ssn 139/tcp #NETBIOS Session Service
microsoft-ds 445/udp #Direct-Hosted Service
microsoft-ds 445/tcp #Direct-Hosted Service
3. Instalace
Nejprve Sambu stáhneme z oficiálních stránek projektu
(www.samba.org) - aktuální verze je 2.2.6.
Poté následuje rozbalení a klasicky configure, make a make install:
wget http://samba.kn.vutbr.cz/samba/ftp/samba-2.2.6.tar.gz tar xzf ./samba-2.2.6.tar.gz cd ./samba-2.2.6/source ./configure --with-logfilebase=/var/log/samba --with-smbmount --mandir=/usr/man make make installZmíním ještě některé zajímavé přepínače:
--with-configdir=/etc/samba | adresář pro konfiguráky |
--enable-cups | zapne podporu tisku pomocí Common Unix Printing System |
--with-automount --with-smbmount |
Podpora pro Automount a Smbmount |
--with-krb4=base_dir --with-krb5=base-dir |
Podpora Kerberos autentifikace |
--with-acl-support | podpora Access Control Lists pro podrobnější nastavování přístupových práv. Je třeba použít souborový systém s podporou ACL (např. XFS) |
[global] ## základní nastavení serveru workgroup = TUPESYFREENET # NT-Domain-Name nebo Workgroup-Name server string = Samba pro Tupesy # komentář hosts allow = 192.168.0. 127.0.0.1 # omezení přístupu log file = /usr/local/samba/var/log.%m # log zvlášť pro každý stroj log level = 2 # úroveň logování max log size = 50 # in kB security = user # pro jednoduché sdílení použít 'share' socket options = TCP_NODELAY # optimalizace výkonu interfaces = 192.168.0.3/24 # omezení Samby dle rozhraní ## Procházení sítě # Local Master je stroj, který poskytuje procházení lokální subsítí # pokud zde nenastavíme yes, proběhnou na tento post volby local master = yes # Domain Master je stroj, který slučuje seznamy z jednotlivých # podsítí a umožňuje tak procházení více podsítí ; domain master = yes ## Wins # Samba může jednat jako NetBios Name Service server nebo klient ; wins support = yes # Samba jako server ; wins server = w.x.y.z # Samba jako klient ## Hesla a Authentizace encrypt passwords = yes # kryptování hesel pro Win98 a výš unix password sync = yes # synchronizovat unixová hesla s hesly Samby ; pam password change = yes # unixová hesla měnit pomocí PAM ## Domain Control ; domain logons = yes # Samba jako Primary Domain Controller ; logon script = %m.bat # logovací skripty zvlášť pro jednotlivé stroje... ; logon script = %U.bat # ...nebo pro jednotlivé uživatele ## tisk load printers = yes # automaticky načte při startu tiskárny ; printing = bsd # tiskový subsystém: bsd, sysv, plp, lprng, aix, hpux, qnx ; printer admin = root, +ntadmin # uživatelé a skupiny administrující tiskárny ## Winbind # Winbind umožňuje uživatelům Windows NT Domain logování na unixový stroj ; winbind uid = 10000-65000 # uid rezervovaná pro WinNT uživatele ; winbind gid = 10000-65000 # gid rezervovaná pro WinNT uživatele ; winbind template homedir = /home/%D/%U # homy WinNT uživatelů ; winbind template shell = /bin/sh # a jejich shell
# pomocí sekce homes můžeme nastavit sdílení domovských adresářů # pro mnoho uživatelů bez nutnosti uvádět zde každého z nich [homes] comment = Home Directories browseable = no writable = yes valid users = %S # pomocí sekce printers můžeme nastavit sdílení všech tiskáren # bez nutnosti uvádět zde každou z nich [printers] comment = All Printers path = /usr/spool/samba browseable = no # Set public = yes to allow user 'guest account' to print guest ok = no writable = no printable = yes # příklad adresáře pro dočasné soubory [tmp] comment = Temporary file space path = /tmp read only = no public = yes # neveřejná tiskárna přístupná jen některým uživatelům [laser] comment = Laserovka u Kutyho valid users = kuty, kutas path = /homes/laser printer = laser public = no writable = no printable = yes # kutyho soukromý adresář [fredsdir] comment = Fred's Service path = /share/kuty valid users = kuty public = no writable = yes printable = no
/usr/local/samba/bin/smbd -D /usr/local/samba/bin/nmbd -D