Samba

Jaroslav Šeděnka, god.zilla@mail.muni.cz


Obsah


Protokoly a zkratky

SMB/CIFS

Server Message Blocks je jednoduchý protokol původně navržený firmou IBM pro DOS kvůli přístupu k souborům přes LAN, dnes používaná verze byla upravena a rozšířena Microsoftem. V roce 1998 (přibližně v době, kdy Sun ohlásil WebNFS) začal Microsoft prosazovat rozšíření SMB a jeho přejmenování na CIFS (Common Internet File System). V CIFS přibyla podpora pro symbolické i pevné odkazy, přenosy větších souborů a spojování počítačů bez NetBIOSu (od Windows 2000). Při první úloze jste určitě viděli podporu CIFS v jádře, je tam od 2.6.

NetBIOS

Network Basic Input/Output System byl navržen pro IBM v roce 1983 pro malé sítě, přes jeho API můžou komunikovat aplikace po lokální síti. Vzhledem k době návrhu a svému původnímu účelu sám o sobě neumožňuje komunikaci po routovaných sítích, proto je zapouzdřován (nejdříve do Token Ringu, pak do IPX, nyní do TCP/IP – takzvaný NetBIOS over TCP/IP neboli NetBT). Při přihlášení do sítě pošle každý počítač broadcastem svoje NetBIOS jméno a ostatní jej zkontrolují se svým. Pokud se jména shodují, pošlou novému počítači zpět informaci o kolizi a ten musí jméno změnit nebo se od NetBIOS sítě odpojit. Ve velkých sítích ale hodně broadcastového provozu může zbytečně zatěžovat linku, proto se používají tzv. NBNS (NetBIOS Name Server).

WINS (Windows Intranet Naming Service)

služba běžící na Windows NT nebo Sambě, která pracuje jako "jmenný server" pro lokální síť. Jména počítačů se zasílají k ověření a překladu WINS serveru místo toho, aby šly všechny takové dotazy broadcastem. Tím se uleví síťovým linkám a předejde případným problémům s duplicitními názvy počítačů – WINS server nevrátí na dotaz dvě různé odpovědi (což by se mohlo stát při dvou stejně pojmenovaných počítačích na síti). WINS v Sambě zapneme parametrem wins support = yes. Je pak ale potřeba nastavit IP serveru i na stanicích.


Samba

Instalace

Návod pro Debian:

Pokud instalujete na jiné distribuci, pozor ať nezapomenete při startu zapínat minimálně tyto dva přiložené démony – smbd i nmbd.


Konfigurace

Hlavní konfigurační soubor je v Debianu /etc/samba/smb.conf, vypadá jako ini-soubor. Je rozdělený do samostatných sekcí začínajících [nazev], které se vždy týkají jednotlivých sdílených položek. Speciální význam mají sekce [global] s hlavní konfigurací pro celý server, dále [homes], [printers]
Pokud přidáváme uživatele do Samby, je dobré si uvědomit, že Samba při přihlašování vyžaduje, aby byl uživatel zaveden i v systému (třeba v /etc/passwd).
Vzorový konfigurační soubor:

[global]
	netbios name = doto-beta 	; jmeno pocitace
	workgroup = lab.fi.muni.cz 	; skupina
	server string = Popis pocitace	; popis
	unix charset = ISO8859-2	; kodovani 

	security = user	
; share: nekontroluje se nic, 
; user: kontrola hesel proti passwd backend (defaultne tdbsam), 
; domain: clen NT domeny (jmeno stejne jako workgroup), klienty autorizuje domenovy radic
; ads: clen AD domeny, je nutne nastavit parametr REALM = domena
	encrypt passwords = true	; ukladat hesla v hashovane podobe

	wins support = yes	
; fungovat jako "lokalni jmenny server" i pro ostatni pocitace

	passdb backend = tdbsam guest	; kam ukladat hesla 
	
	unix password sync = yes	
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
; při zmene hesla v domene zmenit i heslo v /etc/passwd, passwd program a passwd chat
; urcuji jakymi prikazy se samba pokusi heslo uzivatele nastavit

[homes] ; domovske adresare, pro kazdeho uzivatele se vytvori skryte sdileni s jeho nazvem
	comment = Domovske adresare
	browseable = no	; tohle sdileni nebudeme vypisovat v seznamu sd. adresaru
	writable = yes
	create mask = 0700
	directory mask = 0700


Užitečné parametry

k jednotlivým sekcím můžeme docela jednoduše omezit přístup pomocí těchto direktiv:

write list = uzivatel @skupina
hosts allow = pocitac @domena
writable = no
guest ok = yes
valid users = uzivatel @skupina
další zajímavé direktivy:
browseable = yes
force user = uzivatel_ktery_bude_vlastnit_vsechny_vytvorene_soubory


Jednotliví démoni

smbd – hlavní část Samby, zajišťuje samotné sdílení souborů, tiskáren, ověřování klientských hesel proti lokální databázi
nmbd – slouží jako NetBIOS name server, překládá NetBIOS adresy na IP a naopak. Používá ho smbd, ale pokud v Sambě zapneme WINS tak funguje i jako WINS server pro ostatní počítače v subnetu (WINS server udržuje seznam zaregistrovaných jmen počítačů, zakazuje registraci duplicitních jmen a překládá NetBIOS jména na IP a naopak pro počítače v podsíti). Je nutný k běhu smbd
winbindd – je potřeba pokud běží Samba jako součást NT nebo Active Directory domény nebo pokud chceme ověřovat lokální uživatele proti NT/AD doméně. Umí taky mapovat Unixové UID/GID na Windowsí SID.


Přibalené utility

smbclient

umožňuje výpis, procházení a kopírování souborů na/z SMB serverů (ať už Windowsích nebo Unixů), vhodné pro testování funkčnosti sdílení.
Příklad (tučně je psaný vstup):
zeus:/etc/samba# smbclient -L godzilla
Password:
Domain=[GODZILLA] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       Vzdálený IPC
        Games           Disk
Domain=[GODZILLA] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        
zeus:/etc/samba# smbclient //godzilla/Games
Password:
Domain=[GODZILLA] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> cd Tetrifast
smb: \Tetrifast\> ls
  .                                   D        0  Tue Mar  8 21:11:08 2005
  ..                                  D        0  Tue Mar  8 21:11:08 2005
  DEFAULT.TNP                         A      378  Sun Jan 26 19:01:42 1997
  DATA                                D        0  Tue Mar  8 21:11:30 2005
  tetrifast.exe                       A   186368  Fri Mar 23 16:54:00 2001
  TETRINET.TXT                        A    24648  Sat Feb  1 12:34:44 1997
  tetrinet.ini                        A      490  Thu Mar 24 22:42:06 2005
  tetrinet.ban                        A        2  Thu Mar 24 22:42:06 2005

                36238 blocks of size 524288. 1139 blocks available
smb: \Tetrifast\> get tetrifast.exe
getting file \Tetrifast\tetrifast.exe of size 186368 as tetrifast.exe (1046.0 kb/s) (average 1046.0 kb/s)
smb: \Tetrifast\> exit

smbpasswd

přidávání uživatelů do Samby, případně změna hesel a mazání uživatelů. Pozor - všichni uživatelé musí být navíc zavedení v systému.
zeus:/etc/samba# smbpasswd -a pes
New SMB password:
Retype new SMB password:
Added user pes.

smbfs

není přímo součástí samby, ale v kernelu; slouží k připojování sdílených adresářů.
zeus:/etc/samba# mount -t smbfs //godzilla/Games /mnt/Games/ -o 'username=jmeno,password=heslo,iocharset=iso8859-2,codepage=cp852'
zápis do /etc/fstab:
//godzilla/Games /mnt/Games/ smbfs username=jarek,password=,iocharset=iso8859-2,codepage=cp852 0 0

Odkazy