Samba je skupina programů, založená na obecném klient/server protokolu SMB(Server Message Block) vyvinutém firmami Microsoft, IBM, Intel a 3COM a je dostupná pod GNU GPL licencí. Původním autorem je Andrew Tridgell. Nedávno byl tento protokol SMB přejmenován na CIFS (Common Internet File System). Protokol SMB se používá pro komunikaci mezi pracovními stanicemi a serverem Windows a OS/2. UNIXové systémy však používají NFS, proto vznikla Samba. Jeví se totiž výhodnější a jednodušší naučit UNIX komunikovat s Windows pomocí jejich nativního protokolu, než by tomu bylo naopak. Samba je velice portabilní, takže se s ní můžeme setkat na řadě systémů jako například Linux, FreeBSD, Solaris a další UNIXové platformy. Samba poskytuje následující služby:
netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp swat 901/tcp # Samba Web Administration Tool
NetBIOS (Network Basic Input/Output System) pochází od firmy IBM, která ho vymyslela v roce 1985 jako API (application programming interface) pro práci ve vlastních sítích, které poskytovalo základní funkce na propojení aplikací a sdílení dat s ostatními stanicemi. Ještě téhož roku IBM vydalo následovníka NetBEUI (NetBIOS Extended User Interface), který umožňoval 15 písmené názvy a až (255) uzlů na síti.
Protože TCP/IP používá k označování strojů číselné adresy a NetBIOS jenom jména, vznikly dokumenty RFC 1000 a RFC 1002, které popisují, jak by měl NetBIOS pracovat na TCP/UDP sítích. Tyto dokumenty popisují všechny implementace, včetně Samby a nativního protokolu Windows.
WINS (Windows Internet Name Service) je implementace NetBIOS nameserveru od firmy Microsoft. Jako takový má stejné charakteristiky jako NetBIOS. Je jednoduchý, takže lze mít pouze jednoduché názvy skupin a počítačů. Jakmile se WINS klient připojí k síti, ohlásí se podsíti UDP datagramem na portu 137 a je mu přidělena IP adresa. Vyslání datagramu opakuje každých 12 minut. Server tyto datagramy odchytává a aktualizuje své tabulky. Aktivnímu serveru se říká primární WINS server. Lze nainstalovat i sekundární WINS server, který v případě nedostupnosti serveru primarního přebere jeho roli. To, který WINS server bude primární a který sekundární je statická informace a je potřeba ji nastavit přímo na pracovních stanicích. Primární a sekundární server synchronizují záznamy periodicky. Samba může být primárním WINS serverem, ale ne sekundárním.
Kromě již zmíněných démonů obsahuje balík Samba ještě následující programy:
make_smbcodepage - vytváří definiční soubory SMB kódových stránek pro smbd server.
nmblookup - umožňuje dotazy na NetBIOS jména přes TCP/IP síť.
smbclient - klinet podobný obyčejnému ftp klientovi. Umožňuje připojovat se ke sdíleným zdrojům.
smbmount - připojuje Linuxový SMB filesystem. Pracuje pouze pod Linuxem a smbfs musí být podporován jádrem.
smbpasswd - má stejnou funkci jako běžný passwd program, udržuje oddělenou databázi hesel používaných Sambou.
smbstatus - program vypisuje aktuální připojení a stav Samba serveru.
smbtar - zálohuje data ze sdílených disků, má podobnou syntaxi jako Unixový tar.
smbumount - smbfs umount pro běžné uživatele. Pracuje jako suid root.
swat - Samba Web Administration Tool - umožňuje konfigurovat Sambu přes webový prohlížeč.
testparm - program na kontrolu syntaxe konfiguračního souboru (smb.conf).
testprns - program pro kontrolu tiskáren v souboru printcap.
Nejprve Sambu stáhneme z oficiálních stránek projektu (www.samba.org), poté následuje rozbalení. Aktuální verze je 3.0.0.:
# wget http://samba.kn.vutbr.cz/samba/ftp/samba-3.0.0.tar.gz # tar xzf samba-3.0.0.tar.gz # cd samba-3.0.0/sourceNyní přejdeme ke kompilaci ze zdrojových souborů obvyklým způsobem:
# ./configure [parametry] # make # make installDostupné parametry se získají parametrem --help. Za zmínku stojí následující:
--with-ssl --with-pam --with-ldap --with-quotas --with-configdir=/etc/samba adresář pro konfigurační soubory --enable-cups zapne podporu tisku pomocí Common Unix Printing System --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 nutná podpora ACL na souborovém systému)Společně se Sambou se nainstaluje také SWAT (Samba WEB administration tool).
Konfigurační soubor je obvykle v adresáři /etc/samba (linux) nebo /usr/local/etc (FreeBSD). Následují ukázky konfigurace:
Protože UNIXové systémy používaji znakovou sadu ISO8859-2(případně UTF-8) narozdíl od Windows, které používají WIN-1250, je třeba zajistit správné ukládání jmen na discích. Slouží k tomu konfigurační volby client code page a character set:
internacionalizace
Samba má dokonce podporu pro překlad asijských a japonských jazyků na normální znaky.
[global] ## základní nastavení serveru workgroup = PATRO7 # NT-Domain-Name nebo Workgroup-Name server string = Leisyho Samba server # komentář hosts allow = 192.168.0. 127.0.0.1 # omezení přístupu log file = /var/log/samba/log.%m # log zvlášť pro každý stroj log level = 2 # úroveň logování max log size = 500 # v kB character set = ISO8859-2 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í # uživatelé Unixu mohou namapovat svá jména na jiné SMB uživatelská jména username map = /etc/samba/smbusers ## 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 = 192.168.1.1 # 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 # logovací skripty zvlášť 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(umožňuje uživatelům Windows NT Domain logování na unixový stroj) ; winbind uid = 50000-65000 # uid rezervovaná pro WinNT uživatele ; winbind gid = 50000-65000 # gid rezervovaná pro WinNT uživatele ; winbind template homedir = /home/%D/%U # home adresáře WinNT uživatelů ; winbind template shell = /bin/sh # shell WinNT uživatelů
Každý sdílený prostředek má v smb.conf vlastní sekci. Jedinou výjimku tvoří sekce [homes] a [printers], které zastupují skupiny sdílených prostředků.
[homes] comment = Home Directories browseable = yes writable = yes valid users = %S create mode = 0664 directory mode = 0775 # 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 = /var/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 files path = /tmp read only = no public = yes # tiskárna přístupná jen některým uživatelům [HPlaser] comment = HP LaserJet valid users = root, user path = /homes/laser printer = laser public = no writable = no printable = yes # nasdílení disku Windows pro uživatele guest [deimos] comment = R.I.P. Tudle sou mrtvy WINDOZE(pristupne pres guest uzivatele) path = /mnt/deimos/ public = no available = yes browseable = yes writeable = no guest ok = yes username = guest
Zda běží na počítači Samba server ozkoušíme příkazem smbclient -L localhost. Kompletní přehled možných parametrů získáme vypsáním tohoto příkazu bez parametrů.
Spouštění provádíme ručně superuživatelem pomocí těchto příkazů:
# /usr/local/samba/bin/smbd -D # /usr/local/samba/bin/nmbd -D
www.samba.org
SMB howto
O'Reilly: Using Samba
http://whatis.techtarget.com/
The Requests for Comments (RFC) documents
Understanding the Network Neighborhood