Balík programů Samba (aktuálně jsou verze řady 3) slouží ke sdílení souborů a tiskáren pomocí protokolů SMB a CIFS. Díky Sambě je možné zpřístupnit data v Unixu i pro uživatele v systému MS Windows.
SMB (Server Messaging Block) je starší protokol navržený pro sdílení souborů a tiskáren. Původně byl vytvořen firmou IBM. Microsoft ho převzal, mírně vylepšíl a přejmenoval na CIFS (Common Internet File System). Protokol CIFS oproti SMB podporuje tzv. Unixové rozšíření (práva, uid, symbolické odkazy apod). Budeme se zabývat implementací těchto protokolů nad TCP/IP. Starší verze SMB a CIFS neumí běžet přímo nad TCP/IP, ale potřebují ještě jako mezivrstvu protokol NETBIOS (NETBIOS over TCP/IP). Microsoft uvolnil s Windows 2000 implementaci, která běží nad TCP/IP přímo bez protokolu NETBIOS. Samba toto pochopitelně také podporuje. Pro služby jsou standardně využívány následující porty:
port/protokol | popis |
---|---|
137/udp | NETBIOS name service ("obdoba DNS" pro protokol NETBIOS) |
138/udp | NETBIOS datagram service (prohlížení počítačů v síti - browsing) |
139/tcp | NETBIOS session service (vlastní sdílení souborů s pomocí NETBIOS) |
445/tcp | SMB Direct (sdílení souborů, SMB/CIFS přímo přes tcp bez NETBIOSu) |
Samba může pracovat jako standartní server, či jako primární/záložní řadič domény Windows NT (PDC/BDC).
Samba je součástí většiny běžných serverových Linuxových distribucí a proto doporučiji využít balík, který je ve vaší distribuci. V případě, že by si chtěl někdo kompilovat Sambu sám, stačí stáhnout zdrojové kódy na adrese http://www.samba.org/ a použít obvyklé instalační postupy (configure a make).
Samba obsahuje několik desítek různých nástrojů, z nichž nejzajímavější jsou:
Pro podrobnější přehled doporučuji prostudovat dokumentaci.
Konfigurační soubor se jmenuje /etc/samba/smb.conf. Má následující strukturu:
[sekce1] volba a = neco volba b = neco ; zakomentovana volba = neco volba = dlouha \ hodnota [sekce2] volba se substituci = a b %u # každý řádek, který začíná ; nebo # se považuje za komentář
Sekce reprezentuje název sdíleného prostředku (služby) s několika výjimkami:
[global]obsahuje volby, které se týkají celého serveru, a výchozí hodnoty pro volby jednotlivých služeb. Základní globální volby jsou:
[homes]řídí sdílení domovských adresářů uživatelů
[printers]to stejné pro tiskárny
Nejdůležitější volby sdílených prostředků:
Ve vetšině voleb je možno používat řetězcové substituce pomocí znaku % (např. %u je jméno uživatele). Více informací o konfiguračním souboru lze nalézt v manuálové stránce (man smb.conf). Na konci referátu je umístěna okomentovaná ukázka. Vlastní server nejlépe spustíme startovacím skriptem (v Gentoo /etc/init.d/samba start). Poté si například vypíšeme sdílené zdroje pomocí smbclient -L server.
Samba standartně používá vlastní formát hesel (pro popis formátu se doporučuji prostudovat příslušnou literaturu). Je ji možné nastavit tak, že se hesla budou synchronizovat s Unixovými. Buďto pomocí modulů pam (pam_smbpass.so) nebo pomocí volání nějakého externího programu (viz ukázka). S vlastní databází se pracuje pomocí příkazu smbpasswd.
[global] dos charset = 852 # kódová stránka pro klienty W98 -- W2000 a výše umí Utf-8, # nesmí zde být 1250, jinak nebude čeština ve Win pracovat!!! unix charset = ISO8859-21,270 # kódová stránka systému workgroup = HLOHSOFT # Netbios název pracovní skupiny/ jméno domény netbios name = Gandalf # jméno stroje v protokolu Netbios map to guest = Bad user guest account = guest # namapuj neznámého uživatele na guest .. passwd program = /usr/bin/passwd %u # unixový uživatelé používají jiný formát hesel než samba -- # při změně hesla do samby zmnění i Unixové passwd chat = *New*UNIX*password* %n\n *new*UNIX*password* %n\n *passwd:*updated* unix password sync = yes username map = /etc/samba/user.map # přemapování jinak pojmenovaných uživatelů Windows na Unixové log file = /var/log/samba3/log.%m max log size = 150 load printers = yes # nastavení tiskárenhttp://www.tldp.org/HOWTO/SMB-HOWTO.html printcap cache time = 1200 # každých 1200 sekund obnov seznam tiskáren printcap name = cups # využij tiskový systém CUPS browseable = yes # povol prohlížení (tj. sdílený zdroj se zobrazí v seznamu sdílených zdrojů # daného počítače, opakem je hodnota browseable = no, která daný sdílený # zdroj "skryje") security = user # typ zabezpečení # user = uživatelské jméno + heslo guest ok = no # ve výchozím nastavení nechci nechat anonymní uživatele přistupovat ke zdrojům # sdílení domovských adresářů [homes] comment = Domovské adresáře read only = No # povol zápis map archive = No map hidden = No # Zakázat mapování dosových atributů na executable bit -- # pozn: nevím o někom, kdo je poutřebuje :-) map system = No browseable = No # zde je vyjimka z pravidla, ikdyž je zde no, # tak uživatel uvidí svůj domovský adresář, # jestliže globální hodnota je yes # nějaká sdílená položka [data] comment = Oddíl data path = /media/data # cesta k položce read only = No browseable = No # chci ji skrýt # tiskárny [printers] comment = Tiskárny path = /var/spool/samba printable = Yes # tiskárna musí být printable = yes browseable = No guest ok = no # chci sk # veřejně zapisovatelná položka [tmp] comment = TEMP path = /tmp browseable = yes writable = yes public = yes ## == guest ok = yes jedna se o veřejné sdílení hosts allow = 10.10.10. #povolit pouze z těchto klientů