SAMBA

Radovan Leistner, <xleistn1@fi.muni.cz>


Obsah


Stručný úvod o Sambě

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:

Základ Samby tvoří 2 hlavní démoni a to:
Samba běží na těchto portech:
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

Pokud se zaměříme na výkon, tak můžeme zjistit, že výkon jmenných/browsing služeb nyní podporuje přibližně 35 000 souběžných klientů a souborové a tiskové služby podporují 500 zároveň připojených uživatelů na středně velkém serveru bez viditelné ztáty výkonu. Lze tedy říci, že Linux/Samba na stejném hardware má lepší výkon než NT server. Zajímavé jsou následující odkazy s grafy výkonu:

graf datového průtoku
graf doby odpovědi


NetBIOS a WINS

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.


Další části balíku Samba

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.


Instalace

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/source
Nyní přejdeme ke kompilaci ze zdrojových souborů obvyklým způsobem:
 # ./configure [parametry]
 # make 
 # make install
Dostupné 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).


Konfigurace

Konfigurační soubor je obvykle v adresáři /etc/samba (linux) nebo /usr/local/etc (FreeBSD). Následují ukázky konfigurace:

internacionalizace

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:

Samba má dokonce podporu pro překlad asijských a japonských jazyků na normální znaky.

globální nastavení

  [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ů
  

nastavení sdílených prostředků

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
  


Testování a spouštění Samby

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


Odkazy

www.samba.org
SMB howto
O'Reilly: Using Samba
http://whatis.techtarget.com/
The Requests for Comments (RFC) documents
Understanding the Network Neighborhood