Obsah
1. Co je to samba
2. Instalace
3. Konfigurace serveru
4. Konfigurace zdílení
   4.1. Slozky
   4.2. Tiskarny
5. Konfigurace uživatelů
6. Spouštění
7. Klient
   7.1. smbclient
   7.2. smbget
   7.3. smbmount
   7.4. smbumount

1. Co je to samba

Samba je Open Source/Free Software balík, který zprostředkovává souborové a tiskové služby SMB/CIFS klientům.

2. Instalace

Samba může být nainstalována z balíčků dostupných pro většinu UNIXových a Linuxových distribucí nebo zkompilována a nainstalována ze zdrojových kódů.
Zdrojové kódy Samby se dají stáhnout přes svn (viz instrukce na http://samba.org/samba/subversion.html) nebo HTTP (viz http://samba.org/samba/download/) případně RSYNC/FTP (z serveru pserver.samba.org).
Pro kompilaci zdrojových kódů stačí sequence
./autogen.sh && ./configure && make && make install
někteří lidé raději instalují make install sekvencí make installbin && make installman pro oddělení instalace binárních souborů a manualových stránek.
Pro zapnutí Active Directory Support je třeba mít vývojové knihovny pro MIT nebo Heimdal Kerberos a OpenLDAP. Při překladu je třeba nahradit ./configure na ./configure --with-krb5=DIR. Po provedeni configure je dobré zkontrolovat, že soubor include/config.h obsahuje řádky
#define HAVE_KRB5 1
#define HAVE_LDAP 1
pokud ne, je třeba zkontrolovat v logu config.log proč nebyly knohovny Kerberos/OpenLDAP nalezeny.

3. Konfigurace serveru

Konfigurace serveru se provádí v souboru /etc/samba/smb.conf (případně /usr/local/samba/lib/smb.conf podle instalace).
Konfigurační soubor je podobný .ini souborům. Každá sekce obsahuje informace o zdílení nebo meta-službách (viz další kapitola). Vyjímkou je speciální sekce [global].
Některé častopoužívané nastavení:
hosts allow seznam hostů/subadres ze kterých povolit přístup (např. 192.168.1. 127.)
include dovoluje přizpůsobit konfiguraci v závislosti na netbios jméně připojujícího se stroje
load printers zdali se mají automaticky načítat tiskárny
local master zdali se má server stát hlavním prohlížečem v síti
security mód zabezpečení, podporované módy jsou
  • share - uživatelé se při připojení nemusí autentizovat
  • user - uživatel se musí nejprve autentizovat jménem a heslem (výchozí)
  • domain - tento mód pracuje pouze, když je síť nastavená na použití stroje ve Windows NT Doméně. Předpokládá se, že parametr password bude nastaven na yes.
  • server - v tomto módu se bude Samba pokoušet zvalidovat jméne/heslo pomocí jiného SMB serveru. Při selhání se přejde zpět na security = user.
  • ads - v tomto módu se bude Samba jako člen ADS sféry
server string ekvivalent pole NT Popis
wins support povolit v NMBD WINS server
workgroup NT Domain name nebo Workgroup-Name (povinný)

4. Konfigurace zdílení

Zdílení složek a tiskáren se konfiguruje v souboru /etc/samba/smb.conf. Všechny sekce (kromě sekce [global]) jsou definicí nějakého zdílení. Nastavení definic:
browsable určuje zdali se má zdílený bod zobrazit ve výpisu
comment komentář zobrazený u zdíleného bodu
create mask maska se kterou budou vytvářeny složky a soubory
guest ok zdali můžou k bodu přistupovat lidi bez autorizace
path cesta ke zdílenému bodu v systému
printable zdali můžou uživatelé otevírat, psát a posílat tiskové soubory do složky tohoto zdílení
public zdali je viditelný i bez autorizace
read only zdali je zdílený bod jen pro čtení (opak writable)
valid users kteří uživatelé se mohou připojit k bodu
writable zdali se dá zapisovat

4.1. Složky

Příklad zdílení domovských adresářů:
[homes]
   comment = Home Directories
   browseable = no
   writable = yes
Příklad veřejného adresáře:
[public]
   comment = Public (ro)
   path = /mnt/data
   public = yes
   writable = no
   printable = no
Příklad neveřejného adresáře přístupného pouze dvoum uživatelům:
[myshare]
   comment = Mary's and Fred's stuff
   path = /usr/somewhere/shared
   valid users = mary fred
   public = no
   writable = yes
   printable = no
   create mask = 0765

4.2. Tiskárny

Příklad zdílení všech tiskáren (pokud je tiskový systém podobný tiskovému systému BSD):
[printers]
   comment = All Printers
   path = /usr/spool/samba
   browseable = no
   guest ok = no
   writable = no
   printable = yes
Příklad soukromé tiskárny:
[fredsprn]
   comment = Fred's Printer
   valid users = fred
   path = /homes/fred
   printer = freds_printer
   public = no
   writable = no
   printable = yes

5. Konfigurace uživatelů

Noví uživatelé se přidávají, odebírají a editují pomocí programu smbpasswd a jsou uloženi v /etc/samba/private/smbpasswd. Při spustění tohoto programu normálním uživatelem se program chová jako passwd, akorát se přímo nezapisuje do souboru, ale jako server-client, tudíž není třeba, aby byl smbpasswd nastaven se suid root bitem. Při spuštení pod rootem se program chová podle předaných parametrů (viz příklady) a zapisuje přímo do souboru, takže nemusí zrovna běžet smbd.
Příklad přidání uživatele:
root# smbpasswd -a LoginID
New SMB password:
Retype new SMB password:
Added user LoginID.
Příklad změny hesla uživatele:
root# smbpasswd LoginID
New SMB password:
Retype new SMB password:
Příklad smazání uživatele:
root@athatia:~# smbpasswd -x LoginID
Deleted user LoginID. 

6. Spouštění

Samba server se zkládá ze tří subserverů, z nichž alespoň první dva musí být puštěny. Démoni jsou napsáni v pořadí v němž se mají spouštět. Příklad skriptu, který spouští Sambu:
if [ ! -e /var/run/samba ]; then
  mkdir /var/run/samba
fi &&
if ! netstat -l --udp | grep -q netbios-ns ; then
  echo "Starting NetBIOS nameserver ..."
  /usr/sbin/nmbd
fi  &&
if ! netstat -l --tcp | grep -q netbios-ssn ; then
  echo "Starting NetBIOS sessions ..."
  /usr/sbin/smbd
fi

7. Klient

Samba v sobě zahrnuje nejenom server, ale také programy pro to aby se počítač mohl tvářit jako klient.

7.1. smbclient

smbclient je utilita ppro přístup k SMB/CIFS zdrojům na serverch. Ovládání a chování je podobné programu ftp.
Příklad:
# Get a list of shares available on a host
$ smbclient -L localhost -U%
Sharename Type Comment
--------- ---- -------
Plans     Disk
IPC$      IPC  IPC Service (Samba 3.0.20)
ADMIN$    IPC  IPC Service (Samba 3.0.20)

Server    Comment
--------- -------
SERVER    Samba 3.0.20

Workgroup Master
--------- --------
MIDEARTH  SERVER


# Connect to the server
$ smbclient //localhost/Plans
Password: 
Anonymous login successful
Domain=[MIDEARTH] OS=[Unix] Server=[Samba 3.0.20]
smb: \> quit
$

7.2. smbget

smbget je utilita podobná programu wget pro stahování souborů přes SMB. Umístění souboru se zadává v smb-URL standardu.
Příklady:
# Recursively download 'src' directory
smbget -R smb://rhonwyn/jelmer/src
# Download FreeBSD ISO and enable resuming 
smbget -r smb://rhonwyn/isos/FreeBSD5.1.iso
# Recursively download all ISOs
smbget -Rr smb://rhonwyn/isos
# Backup my data on rhonwyn
smbget -Rr smb://rhonwyn/

7.3. smbmount

smbmount připojuje souborový systém smbfs. Obvykle je volán jako mount.smbfs programem mount při uvedení přepínače "-t smbfs". smbmount je démon, který běží dokud není přimoutovaný smbfs odmountován. Pokud nejde přimountovat smbfs, zkontrolujte setuid root bit u programů smbmount, mount.smbfssmbmnt.
Příklady:
# Mount some point
smbmount //server/Plans /mnt/plans
# Mount as different user and with specified server codepage
smbmount //server/Plans /mnt/plans -o username=someuser,codepage=cp1250

7.4. smbumount

smbumount odpojuje souborový systém smbfs. Byl vytvořen, aby dal normálním uživatelům Linuxu větší kontolu nad jejich zdroji.
Příklady:
# Unmount some point
smbumount ~/mnt/plans

Zdroje
Stránky projektu - samba.org
Samba3-HOWTO - PDF HTML
Samba3-ByExample - PDF HTML
man stránky - smbclient(1), smbget(1), smbmount(8), smbumount(8), smbpasswd(8), smb.conf(5)
Zkratky
ADS (Active Directory Service)
zajišťuje administraci všech věcí přístupných přes Active Directory.
CIFS (Common Internet File System)
je protokol pro zdílení souborů, tiskáren, seriových portů a komunikačních abstrakcí jako pojmenované roury nebo mail sloty mezi počítači. CIFS je založen na široce používaném SMB protokolu.
SMB (Server Message Block)
je protokol pro zdílení souborů, tiskáren, seriových portů a komunikačních abstrakcí jako pojmenované roury nebo mail sloty mezi počítači
WINS (Windows Internet Naming Service)
je služba, která pracuje jako jmenný server. Použitím WINS se dá předejít vrácení dvou různých odpovědí pro shodně pojmenované počítače v sítí.