Samba

je značně populární programový balík dostupný v rámci GNU licence, který implementuje serverovou část protokolu CIFS na klientu s Linuxem. Původně byl balík vytvořen Australanem Andrewem Trigellem, který rozpitval protokol SMB a výsledný kód vydal v roce 1992. Dnes je systém Samba dobře podporován a aktivně vyvíjen pro začlenění další funkcionality. Systém poskytuje stabilní mechanismus pro integraci Windows sítě s Linuxem. Krása Samby spočívá vtom, že je potřeba na Linuxu nainstalovat pouze jeden programový balík, na straně Windows není potřeba instalovat nic.

Systém CIFS nabízí pět základních služeb:

  • Sdílení souborů
  • Síťový tisk
  • Autentizaci a autorizaci
  • Vyhledávání jmen
  • Oznamování služeb (prohledávání souborových a tiskových serverů)

Samba neposkytuje pouze soubory na Linuxu pomocí protokolu CIFS, ale může také provádět všechny základní funkce primárního serveru Windows NT 4.0 domény. Samba podporuje některé pokročilé vlastnosti včetně přihlašování do Windows NT domén, předávání profilů uživatelů Windows a sdílení tiskáren pomocí CIFS. Na rozdíl od systému NFS, který je silně provázán s jádrem, Samba nevyžaduje žádné úpravy jádra a běží zcela jako uživatelský proces. Připojí se na porty používané pro příchozí NBT požadavky a čeká na požadavky od klientů na přístup k nějakému zdroji. Poté co je požadavek přijat a autorizován, démon smbd vytvoří kopii sama sebe a pracuje pod uživatelem daného požadavku. výsledkem je, že jsou zachována všechna přístupová práva souboru v Linuxu(včetně skupinových práv).

Instalace Samby

Jak již bylo napsáno, je to velmi snadný proces, jen nainstalujeme balík samba a smbfs, tzn. například přes Terminál:

sudo apt-get install samba smbfs

Jednoduchá grafická konfigurace samby

Nainstalujte balík system-config-samba a spusťte.

sudo apt-get install system-config-samba

Konfigurace Samba serveru

Nastavení uživatelů

Nejprve musíme přidat uživatele, pod kterým se budeme moci přihlašovat do sítě, to provedeme zadáním příkazu v Terminálu:

sudo smbpasswd -a jmeno_uzivatele

Pro odstranění uživatele lze zadat do Terminálu:

sudo smbpasswd -x jmeno_uživatele

Přehled všech uživatelských účtů je dobře vidět (a zároveň ho lze editovat ) v souboru /etc/samba/smbusers. Ten si můžeme zobrazit v Textovém editoru spuštěným s oprávněním administrátora:

gksudo gedit /etc/samba/smbusers

Každý uživatel Samby musí existovat i v systému, nemusí mít nastaveny práva, heslo ani vytvořený adresář. Prostě jenom musí existovat a být zařazen do vhodné skupiny, skupin. V následujícím příkazu vyplňte i vlastní_jméno čímkoliv ať příkaz nechce zadání doplňkových informací o uživateli.

 sudo adduser --quiet --no-create-home --disabled-password  --gecos VLASTNÍ_JMÉNO  --ingroup SKUPINA JMÉNO_UŽIVATELE

Jeden uživatel je zadaný na třech místech, na toto se často zapomíná. Uživatel se stejným jménem a heslem musí existovat tj. být zadán v Samba serveru a být přihlášen se stejným jménem a heslem na počítači z kterého se chcem k Samba serveru přihlásit a musí existovat i v systému na kterém Samba server běží, ale zde nemusí mít zadané heslo.

Pokud jste měli zřízený účet na Windows a ten jste ve správě uživatelů přejmenovali, tak se vám pravděpodobně nepodaří přihlásit k Samba serveru. Stejně tak nesmíme zapomenout že většinou po zřízení účtu ve Windows nemá uživatel vytvořené heslo a pokud jsme od koupi počítače ještě nenastavovali uživatele a heslo, tak je uživatelské jméno nějaký OEM nesmysl a heslo také neexistuje. A to se tedy k Samba serveru nepřihlásíme.

Uživatelské jméno ve Windows XP lze změnit ve skryté nabídce. Není třeba mazat a znovu vytvářet účet. Ve Windows XP zadejte příkaz control userpasswords2, vyberte váš účet, klikněte na vlastnosti a na kartě Obecné v kolonce Uživatelské jméno upravíte uživatelské jméno účtu dle uživatelského jména v linuxu/sambě. Ještě je potřeba nastavit správně heslo pro tento účet (Ovládací panely → Uživatelské účty).

Sdílení domovského adresáře s oprávněním jen pro čtení a s autentizací

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = user
username map = /etc/samba/smbusers

To znamená, že odstraníme středník před security a pod tento řádek přidáme další s textem username map = /etc/samba/smbusers.

Restartujeme Sambu:

sudo /etc/init.d/samba restart

Nebo

sudo service smbd restart

A máme hotovo.

Sdílení domovského adresáře s oprávněním pro čtení i zápis a s autentizací

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = user
username map = /etc/samba/smbusers

To znamená, že odstraníme středník před security a pod tento řádek přidáme další s textem username map = /etc/samba/smbusers.

Nalezneme tento řádek:

...
# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
  writable = no
...

Změníme ho na:

# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
  writable = yes

Restartujeme Sambu:

sudo /etc/init.d/samba restart

A máme hotovo.

Sdílení adresáře pro skupinu uživatelů s oprávněním jen ke čtení a s autentizací

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Vytvoříme v Terminálu adresář, ke kterému budou mít přístup v síti jen zvolení uživatelé příkazy:

sudo mkdir /home/group
sudo chmod 777 /home/group/

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = user
username map = /etc/samba/smbusers

To znamená, že odstraníme středník před security a pod tento řádek přidáme další s textem username map = /etc/samba/smbusers.

Nakonec souboru přidáme tyto řádky:

 [Group]
  comment = Group Folder
  path = /home/group
  public = yes
  writable = no
  valid users = uzivatel_1 uzivatel_2
  create mask = 0700
  directory mask = 0700
  force user = nobody
  force group = nogroup

V proměnné valid users napište všechny uživatele mající oprávnění k přístupu do adresáře v path.

Název adresáře můžeme zvolit jaký chceme, ne pouze /home/group. Ale nezapomeňte po změně názvu adresáře změnit proměnou path v konfiguračním souboru.

Restartujeme Sambu:

sudo /etc/init.d/samba restart

Nebo:

sudo service smbd restart

A máme hotovo.

Sdílení adresáře pro skupinu uživatelů s oprávněním pro čtení i zápis a s autentizací

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Vytvoříme v Terminálu adresář, ke kterému budou mít přístup v síti jen zvolení uživatelé příkazy:

sudo mkdir /home/group
sudo chmod 777 /home/group/

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = user
username map = /etc/samba/smbusers

To znamená, že odstraníme středník před security a pod tento řádek přidáme další s textem username map = /etc/samba/smbusers.

Nakonec souboru přidáme tyto řádky:

 [Group]
  comment = Group Folder
  path = /home/group
  public = yes
  writable = yes
  valid users = uzivatel_1 uzivatel_2
  create mask = 0700
  directory mask = 0700
  force user = nobody
  force group = nogroup

V propměnné valid users napište všechny uživatele mající oprávnění k přístupu do adresáře v path.

Název adresáře můžeme zvolit jaký chceme, ne pouze /home/group. Ale nezapomeňte po změně názvu adresáře změnit proměnou path v konfiguračním souboru.

Restartujeme Sambu:

sudo /etc/init.d/samba restart

Nebo:

sudo service smbd restart

A máme hotovo.

Sdílení veřejného adresáře s oprávněním jen pro čtení a s autentizací

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Vytvoříme v Terminálu adresář, ke kterému budou mít přístup v síti všichni uživatelé příkazy:

sudo mkdir /home/public
sudo chmod 777 /home/public/

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = user
username map = /etc/samba/smbusers

To znamená, že odstraníme středník před security a pod tento řádek přidáme další s textem username map = /etc/samba/smbusers.

Nakonec souboru přidáme tyto řádky:

 [public]
  comment = Public Folder
  path = /home/public
  public = yes
  writable = no
  create mask = 0777
  directory mask = 0777
  force user = nobody
  force group = nogroup

Název adresáře můžeme zvolit jaký chceme, ne pouze /home/public. Ale nezapomeňte po změně názvu adresáře změnit proměnou path v konfiguračním souboru.

Restartujeme Sambu:

sudo /etc/init.d/samba restart

A máme hotovo.

Sdílení veřejného adresáře s oprávněním pro čtení i zápis a s autentizací

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Vytvoříme v Terminálu adresář, ke kterému budou mít přístup v síti všichni uživatelé příkazy:

sudo mkdir /home/public
sudo chmod 777 /home/public/

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = user
username map = /etc/samba/smbusers

To znamená, že odstraníme středník před security a pod tento řádek přidáme další s textem username map = /etc/samba/smbusers.

Nakonec souboru přidáme tyto řádky:

 [public]
  comment = Public Folder
  path = /home/public
  public = yes
  writable = yes
  create mask = 0777
  directory mask = 0777
  force user = nobody
  force group = nogroup

Název adresáře můžeme zvolit jaký chceme, ne pouze /home/public. Ale nezapomeňte po změně názvu adresáře změnit proměnou path v konfiguračním souboru.

Restartujeme Sambu:

sudo /etc/init.d/samba restart

A máme hotovo.

Sdílení veřejného adresáře s oprávněním jen pro čtení a bez autentizace

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Vyvoříme v Terminálu adresář, ke kterému budou mít přístup v síti všichni uživatelé příkazy:

sudo mkdir /home/public
sudo chmod 777 /home/public/

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = share

Nakonec souboru přidáme tyto řádky:

 [public]
  comment = Public Folder
  path = /home/public
  public = yes
  writable = no
  create mask = 0777
  directory mask = 0777
  force user = nobody
  force group = nogroup

Název adresáře můžeme zvolit jaký chceme, ne pouze /home/public. Ale nezapomeňte po změně názvu adresáře změnit proměnou path v konfiguračním souboru.

Restartujeme Sambu:

sudo /etc/init.d/samba restart

A máme hotovo.

Sdílení veřejného adresáře s oprávněním pro čtení i zápis a bez autentizace

Nejprve si provedeme zálohu konfiguračního souboru nastavení Samba serveru, zadáním příkazu v Terminálu:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

Vyvoříme v Terminálu adresář, ke kterému budou mít přístup v síti všichni uživatelé příkazy:

sudo mkdir /home/public
sudo chmod 777 /home/public/

Otevřeme si s právy administrátora v textovém editoru konfigurační soubor:

gksudo gedit /etc/samba/smb.conf

Nalezneme tento řádek:

...
;  security = user
...

Změníme ho na:

security = share

Nakonec souboru přidáme tyto řádky:

 [public]
  comment = Public Folder
  path = /home/public
  public = yes
  writable = yes
  create mask = 0777
  directory mask = 0777
  force user = nobody
  force group = nogroup

Název adresáře můžeme zvolit jaký chceme, ne pouze /home/public. Ale nezapomeňte po změně názvu adresáře změnit proměnou path v konfiguračním souboru.

Restartujeme Sambu:

sudo /etc/init.d/samba restart

A máme hotovo.

Možné problémy

Zde jsou různé problémy, se kterými je možno se setkat a jak je řešit

Nedaří se spojit

Pokud se nedaří spojit s počítačem, kde je Samba, zkontrolujte zda jeho jméno není větší než 15 znaků, zkontrolujte název počítače v /etc/hostname

Název by neměl být delší než 15 znaků, NETBIOS se s tím neumí řádně srovnat

Stejně tak by v něm neměly být znaky jako tečka, lomítko apod. Pomlčka je vpořádku.

Pokud je v názvu problém, editujte ho tímto příkazem

gksudo gedit /etc/hostname

Samba a příkazová řádka

Ovládání Samby z příkazové řádky, včetně zopakování již použitých.

Výpis spojení a stavu Samby. Pomocí přepínačů lze výpis upřesnit. *http://www.samba.org/samba/docs/man/manpages-3/smbstatus.1.html

smbstatus

Ovládání samby, například uzavření spojení. Podrobnosti „man smbcontrol“. Opatrně! *http://www.samba.org/samba/docs/man/manpages-3/smbcontrol.1.html

smbcontrol

Restart Samby.

sudo /etc/init.d/samba restart

Přidání uživatele

sudo smbpasswd -a jmeno_uzivatele

Odstranění uživatele.

sudo smbpasswd -x jmeno_uživatele

Přehled všech uživatelských účtů.

gksudo gedit /etc/samba/smbusers

Odkazy

Aktualizace: Informace v tomto návodě jsou příliš zastaralé a potřebují aktualizaci pro současné poměry. Více...

Konvence: Tento návod nesplňuje některé z na Wiki zavedených konvencí. Více...

Grafická úprava: Tento návod potřebuje důležité grafické a stylistické úpravy. Více...

Poslední úprava: 2014/03/18 22:02, autor: Jakub Vaněk
Logo Ubuntu, Ubuntu a Canonical jsou registrované obchodní známky firmy Canonical Ltd.