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
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
- Samba: Fileserver na bázi protokolu SMB pro UNIX – detailnější popis od Spidera
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...