Samba
Obsah
- Úvod
- Porty
- Instalace
- Spuštění
- Hlavní části a testovací nástroje
- Popis konfigurace
- Odkazy a literatura
Úvod
Samba je open source implementace protokolu Server Message Block (=>SaMBa), což je protokol pro sdílení souborů a tiskáren. Jeho počátky lze nalézt v roce 1985, kdy ho uvedlo IBM pod názvem IBM PC Network SMB Protocol. Protokol se nachází v OSI modelu na aplikační a prezentační vrstvě, pro nižší vrstvy se využívá NetBIOS - Network Basic Input/Output System. Velkou nevýhodou byla možnost komunikace pouze na lokální síti, pro směrování bylo potřeba zapouzdřit NetBIOS do TCP/IP, což se nazývá NetBT, případně NetBIOS over TCP/IP.
Microsoft (a mnoho dalších) SMB dále rozpracoval a v roce 1998 ohlásil novou verzi pod jménem Common Internet File System (CIFS), jehož přínosem je hlavně podpora práce přímo nad TCP/IP.
Díky Sambě mohou systémy UNIXového typu bez problémů komunikovat se systémy Microsoft Windows.
Porty
Samba pro svou funkci využívá následující porty:
- 137/udp - překlad jmen
- 138/udp - zjišťování seznamu sdílených prostředků
- 139/tcp - přístup ke sdíleným prostředkům
- 445/tcp - přímý přístup ke sdíleným prostředkům přes TCP/IP (od MS Windows 2000)
Instalace
Pro instalaci je nejjednodušší použít balíčkovací systém Vaší distribuce. Pokud přesto chcete instalaci provést ručně, lze postupovat dle návodu v oficiálním HOWTO.
Spuštění
V distribuci Fedora Core provedeme spuštění takto:
/etc/init.d/smb start
Tento příkaz spustí dva daemony - smbd a nmbd, popsané v další části. Spouštění lze provést i pomocí inetd, případně xinetd. Postup lze nálézt v oficiálním HOWTO.
Hlavní části a testovací nástroje
Samba se skládá ze dvou hlavních částí:
- smbd - daemon, který naslouchá na zmíněných portech a po připojení klienta spustí nový proces, v němž je daný klient obsluhován. Po odpojení klienta se nový proces ukončí.
- nmbd - daemon zodpovědný za překlad jmen stanic na adresy (Windows Internet Name Service - WINS)
Samba dále obsahuje několik důležitých pomůcek, které se hodí při konfiguraci i samotném užívání:
- smbclient - klient, sloužící hlavně pro testování konfigurace serveru. pro normální použití je celkem nevhodný.
Při testování úkolu se budou hodit následující příkazy:
Vypsání sdílených prostředků serveru:
smbclient -L <server>
Připojení se ke sdílenému prostředku pod daným uživatelem:
smbclient //<server>/<sdileny_prostredek> -U <uzivatel>
Další možnosti naleznete pomocí:
man 1 smbclient
- smbmount/smbfs - jádra verze 2.6.x v sobě obsahují podporu protokolu CIFS, tudíž pro použití je nutné tuto volbu při kompilaci jádra povolit. Pokud je podpora povolena, můžete sdílený adresář připojit pomocí následujícího příkazu:
mount -t smbfs -o "username=<uzivatel>,password=<heslo>,codepage=<stranka>" //<server>/<sdileny_prostredek> /<kam_pripojit>
resp.:
mount -t smbfs -o username=xxx,password=xxx //xxxxxx/xxxmistoxx /xxxkamtochcinamountovat
- Do /etc/fstab se zápis provádí takto:
//<server>/<sdileny_prostredek> /<kam_pripojit> smbfs username=<uzivatel>,password=<heslo>,codepage=<stranka> 0 0
- smbpasswd - nástroj pro přidání/mazání uživatelů, změnu hesel či povolení/zakázání uživatelského účtu. Příklady přidání nového uživatele
smbpasswd -a lubik
Dokumentaci k tomuto příkazu zobrazíte pomocí man 8 smbpasswd nebo v oficiálním HOWTO.
Samba podporuje i nastavení hesla klientem a dokáže synchronizovat toto heslo s heslem unixového uživatele.
- smbstatus - výpis aktuálních SMB spojení
- ... a mnoho dalších (viz man 7 samba)
Popis konfigurace
Konfigurační soubory se ve Fedoře nachází v adresáři /etc/samba/. Hlavní z nich je smb.conf (zkrácená ukázka)
-
[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:- workgroup - název pracovní skupiny/domény
- netbios name - NETBIOS název počítače
- security - zabezpečení
- share - heslo pro zápis a pro čtení (sdílení ve W95/98)
- user - uživatelské jméno + heslo
- domain - autentizace oproti doméně NT
- server - autentizace oproti jinému serveru
- ads - autentizace oproti active directory
- map to guest - kdy se má uživatel namapovat na uživatele guest
- guest account - název účtu uživatele guest
- log file - jméno logovacího souboru
Nejdůležitější volby sdílených prostředků:
- writable (read only) - je zapisovvatelný
- browseable - je viditelný (zobrazí se v seznamu sdílených prostředků pro daný server)
- printable - jedná se o tiskárnu
- public - je veřejný (přístupný pro kohokoliv)
- path - cesta ke sdílenému prostředku
- hosts allow - povolit jen z těchto klientů
- valid users - povolit jen tyto uživatele
# 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
:
[global]
workgroup = PREDATOR
server string = Predator Samba Server
hosts allow = 10.0.0.
security = user
username map = /etc/samba/smbusers
guest account = smb
[homes]
comment = Domovske adresare
browseable = no
writable = yes
[printers]
comment = Tiskarny
path = /var/spool/samba
browseable = no
guest ok = no
[public]
comment = Veci pro verejnost
browseable = yes
writable = no
guest ok = yes
[tmp]
comment = Tady si delejte co chcete
path = /tmp
read only = no
public = yes
[sleepyhollow]
comment = Ospala dira
path = /home/sleepy
valid users = lubik kaso
public = no
writable = yes
create mask = 0765
force user = lubik
V konfiguračním souboru lze použít opravdu velké množství nastavení, kompletní přehled získáte pomocí:
man 5 smb.conf
Konfigurace obsahuje tři speciální sekce, které jsou v ukázce zobrazeny:
- [global] - nastavení pro všechny ostatní sekce
- [homes] - automatické vytvoření sdílených adresářů pro stávající unixové uživatele
- [printers] - nastavení pro všechny ostatní tiskárny
Další položky nastavení, které při řešení úkolu určitě použijete:
- workgroup - nastavení pracovní skupiny, ve které server bude, případně domény (při security=domain)
- security - toto nastavení určuje druh ověřování uživatelů. Výchozí nastavení, které je většinou použito, je nastavení user, kdy pro připojení k serveru je potřeba zadat správné uživatelské jméno a heslo (kromě guest přístupu). Další z možných nastavení jsou share, domain, server a ads. Pro jejich popis se podívejte do oficiálního HOWTO.
- hosts allow - pomocí tohoho nastavení můžete omezit přístup na úrovni IP adres, případně jmen strojů
- username map - soubor obsahující mapu unixových uživatelů na samba uživatele. Jeden unixový uživatel může být namapován na více Samba uživatelů.
- guest account - uživatel, který bude přistupovat k prostředkům označeným guest ok
- browseable - prostředek bude zobrazen ve výpisu prostředků
- writable - prostředek je zapisovatelný (lze do sdíleného adresáře zapsat/měnit soubory)
- valid users - kteří uživatelé mají přístup k danému prostředku. Lze zadat i název skupiny ve tvaru @skupina.
- guest ok - k tomuto prostředku lze přistoupit bez platného hesla. Pro přístup se použije účet guest account.
- create mask - maska, která se aplikuje na práva, která chce uživatel nastavit pro daný soubor. Použije se bitový AND, tudíž práva, která v této masce nejsou nebudou nastavena (a naopak).
Dalším konfiguračním souborem je soubor smbusers. Obsahuje mapování unixových uživatelů na Samba uživatele. Příklad:
root = administrator admin
nobody = guest pcguest smbguest
lubik = potvora1 potvora2
Unixový uživatel lubik může pres Sambu přistupovat pod jmény potvora1 i potvora2.
Dále je zde soubor lmhosts, ve kterém se definuje mapování jmen počítačů na IP adresy a soubor smbpasswd, který se upravuje pomocí utility smbpasswd (popis viz příkaz smbpasswd).
TIPY:
Sdileni z ntfs na linux
mount -t cifs //jmeno_pocitace/sdilena_data /mnt/nejaky_adresar
smbclient -L pocitac vypise dostupna pripojeni u vzdaleneho PC
-
[homes]
řídí sdílení domovských adresářů uživatelů -
[printers]
to stejné pro tiskárny

