Sdílení souborů pomocí Samby
m (Přidán návod na vyzkoušení serveru.) |
m (Upřesněn rozdíl mezi CIFS a SMB.) |
||
(Není zobrazeno 12 mezilehlých verzí od 1 uživatele.) | |||
Řádka 1: | Řádka 1: | ||
[[Category:VSE]][[Category:Informatika]][[Category:Návody]][[Category:Linux]][[Category:OSY]][[Category:Admin]][[Category:Samba]] | [[Category:VSE]][[Category:Informatika]][[Category:Návody]][[Category:Linux]][[Category:OSY]][[Category:Admin]][[Category:Samba]] | ||
− | {{ | + | {{Based_on_Debian_10}} |
== Teorie == | == Teorie == | ||
* Nástroj Samba představuje nejsnazší způsob přenosu souborů mezi Windows a Linuxem. | * Nástroj Samba představuje nejsnazší způsob přenosu souborů mezi Windows a Linuxem. | ||
− | * „Sdílení souborů a tiskáren“ ve Windows je založeno na protokolu SMB | + | * „Sdílení souborů a tiskáren“ ve Windows je založeno na protokolu SMB |
− | * Balík ''Samba'' je svobodná implementace protokolu SMB | + | ** Původně Windows používaly CIFS — implemntace SMB verze 1 od Microsoftu, později přešly na SMB 2 resp. SMB 3 (Windows 8). |
+ | * Balík ''Samba'' je svobodná implementace protokolu SMB v GNU/Linuxu. | ||
== Myšlenka == | == Myšlenka == | ||
− | # Nainstalujeme balíčky s implementací Samby. ([[#Instalace balíčků na server| | + | # Nainstalujeme balíčky s implementací Samby. (Viz také [[#Instalace balíčků na server|Instalace balíčků na server]]) |
# Nastavíme požadovaný adresář (v našem případě kořen webového serveru <tt>/var/www</tt>) jako sdílený svazek pod názvem <tt>web</tt>. (Návod lze samozřejmě použít pro libovolnou jinou složku.) | # Nastavíme požadovaný adresář (v našem případě kořen webového serveru <tt>/var/www</tt>) jako sdílený svazek pod názvem <tt>web</tt>. (Návod lze samozřejmě použít pro libovolnou jinou složku.) | ||
# Vytvoříme ke svému účtu „sambové“ uživatelské jméno <tt>webmaster</tt> a nastavíme mu heslo. | # Vytvoříme ke svému účtu „sambové“ uživatelské jméno <tt>webmaster</tt> a nastavíme mu heslo. | ||
Řádka 18: | Řádka 19: | ||
<div class="Poznamka"> | <div class="Poznamka"> | ||
− | Předpokládáme, že máme nainstalovaný stroj s GNU/Linuxem Debian | + | Předpokládáme, že máme nainstalovaný stroj s GNU/Linuxem Debian a webovým serverem. Pro vytvoření můžete použít [[Instalace webového serveru|Návod pro instalaci webového serveru.]] |
</div> | </div> | ||
+ | |||
+ | ; K čemu mít server? | ||
+ | #S takto vytvořeným serverem následně můžeme: | ||
+ | #* sdílenou složku připojit například k počítači s Windows přes [[Sd%C3%ADlen%C3%AD_soubor%C5%AF_pomoc%C3%AD_Samby#P.C5.99ipojen.C3.AD_sd.C3.ADlen.C3.A9_slo.C5.BEky_ze_druh.C3.A9ho_po.C4.8D.C3.ADta.C4.8De|službu Sdílení souborů a složek]]. | ||
+ | #* Editovat kód webových stránek ve svém oblíbeném editoru a po uložení ho mít přímo připraven na takto vytvořeném pokusném serveru. (Plnohodnotnější náhrada za XAMP a podobné nástroje.) | ||
+ | #Můžeme ale také vytvořit souborový server třeba na Raspberry Pi ([[Raspbian]]) atd. | ||
+ | |||
+ | <div class="Varovani"> | ||
+ | Všimněte si, že je mnohem pohodlnější se serverem pracovat [[Vzdálené připojení k počítači|vzdáleně přes Putty]]. Můžete pak použít schránku pro kopírování příkazů! | ||
+ | </div> | ||
+ | |||
== Instalace balíčků na server == | == Instalace balíčků na server == | ||
− | * Pracujte jako správce (<code>sudo</code>), pro [[Instalace software v GNU/Linuxu|instalaci použijte správce balíčků <code> | + | * Pracujte jako správce (<code>sudo</code>), pro [[Instalace software v GNU/Linuxu|instalaci použijte správce balíčků <code>apt</code>]]. |
− | * Před instalací nezapomeňte aktualizovat seznamy repozitářů (<code>update</code>)! | + | * Před instalací nezapomeňte [[Instalace_software_v_GNU/Linuxu#Pr.C3.A1ce_se_seznamem_repozit.C3.A1.C5.99.C5.AF|aktualizovat seznamy repozitářů (<code>update</code>)]]! |
+ | * Doporučujeme také nejprve aktualizovat stávající balíčky (upgrade). | ||
− | + | apt install samba samba-common | |
Pozn: Pro Raspbian (Raspberry Pi) je třeba ještě doinstalovat: | Pozn: Pro Raspbian (Raspberry Pi) je třeba ještě doinstalovat: | ||
− | + | apt install samba-common-bin | |
== Konfigurace serveru == | == Konfigurace serveru == | ||
Řádka 59: | Řádka 72: | ||
; Konfigurace serveru: | ; Konfigurace serveru: | ||
− | * V části týkající se konfigurace serveru povolte následující volby: | + | * V části týkající se konfigurace serveru povolte nebo přidejte následující volby: |
[global] | [global] | ||
<!-- netbios name = ''NETBIOS_NAME''--> | <!-- netbios name = ''NETBIOS_NAME''--> | ||
workgroup = ''WORKGROUP'' | workgroup = ''WORKGROUP'' | ||
− | + | <!-- V Deb9 asi už ne: security = user --> | |
username map = /etc/samba/smbusers | username map = /etc/samba/smbusers | ||
− | encrypt passwords = yes | + | <!-- V Deb9 asi už ne: encrypt passwords = yes --> |
− | + | <!-- V Deb9 asi už ne: smb passwd file = /etc/samba/smbpasswd --> | |
<!-- interfaces = 192.168.1.1/8--> | <!-- interfaces = 192.168.1.1/8--> | ||
; unix password sync = yes | ; unix password sync = yes | ||
− | + | <div class="Varovani"> | |
+ | Některé volby již v souboru jsou uvedeny. Odpovídající řádky pouze upravte. | ||
+ | |||
+ | S výhodou využijte funkci vyhledávání v textovém editoru (pro editor <code>nano</code> zkratka ''Ctrl-W''). | ||
+ | </div> | ||
; Definice sdílených disků (uvádíme pro každý sdílený disk, v našem případě stačí jeden) | ; Definice sdílených disků (uvádíme pro každý sdílený disk, v našem případě stačí jeden) | ||
Řádka 81: | Řádka 98: | ||
; directory mask = 0700 | ; directory mask = 0700 | ||
− | * | + | * Přidejte sdílenou složku <code>[web]</code> zapište na konec souboru |
[''web''] | [''web''] | ||
comment = ''Hlavni slozka weboveho serveru'' | comment = ''Hlavni slozka weboveho serveru'' | ||
Řádka 92: | Řádka 109: | ||
== Restart služby Samba == | == Restart služby Samba == | ||
* Musí provést správce počítače: | * Musí provést správce počítače: | ||
− | + | systemctl restart smbd | |
− | + | ||
− | + | ||
== Vytvoření uživatelských účtů == | == Vytvoření uživatelských účtů == | ||
Řádka 101: | Řádka 116: | ||
useradd webmaster --shell /bin/false | useradd webmaster --shell /bin/false | ||
− | ; Volitelné — aliasy | + | <div class="Poznamka"> |
+ | ; Volitelné — aliasy pro uživatelské jméno | ||
* Chcete-li pro Sambu používat i jiné uživatelské jména (mapovaná na tento účet), přidejte do souboru <tt>/etc/samba/smbusers</tt> (nejspíš neexistuje) položku pro uživatele <tt>webmaster</tt>: | * Chcete-li pro Sambu používat i jiné uživatelské jména (mapovaná na tento účet), přidejte do souboru <tt>/etc/samba/smbusers</tt> (nejspíš neexistuje) položku pro uživatele <tt>webmaster</tt>: | ||
webmaster = ''nove_uzivatelske_jmeno_pro_sambu'' | webmaster = ''nove_uzivatelske_jmeno_pro_sambu'' | ||
* Pokud se tedy přihlásíte prostřednictvím Samby jako ''nove_uzivatelske_jmeno_pro_sambu'', systém bude vyžadovat heslo uživatele <tt>webmaster</tt> a budou se používat pro přístup k souborům práva uživatele <tt>webmaster</tt>. | * Pokud se tedy přihlásíte prostřednictvím Samby jako ''nove_uzivatelske_jmeno_pro_sambu'', systém bude vyžadovat heslo uživatele <tt>webmaster</tt> a budou se používat pro přístup k souborům práva uživatele <tt>webmaster</tt>. | ||
+ | </div> | ||
; Nastavení hesla: | ; Nastavení hesla: | ||
Řádka 113: | Řádka 130: | ||
<!-- smbpasswd -L -a webmaster ??? ''vase_uzivatelske_jmeno'' --> | <!-- smbpasswd -L -a webmaster ??? ''vase_uzivatelske_jmeno'' --> | ||
− | + | ||
− | * Pro uživatelský účet <tt>webmaster</tt> je třeba povolit přístup do zvoleného adresáře (<tt>/var/www</tt>). | + | == Ověření funkčnosti účtu a síťové jednotky == |
+ | * Nyní již můžeme ověřit vytvořené síťové jednotky (svazky). | ||
+ | * Pro ověření musíme doinstalovat balík <tt>samba-client</tt> viz [[Samba - připojení svazku]]. | ||
+ | * Pro připojení využijte vytvořený uživatelský účet <code>webmaster</code>. | ||
+ | smbclient -L localhost --user=''uzivatelsky-ucet-pro-sambu'' | ||
+ | |||
+ | |||
+ | == Nastavení přístupových práv ke složce s webem == | ||
+ | * Pro uživatelský účet pro Sambu (<tt>webmaster</tt>) je třeba povolit přístup do zvoleného adresáře (<tt>/var/www</tt>). | ||
* Opět musíme pracovat jako správce počítače. | * Opět musíme pracovat jako správce počítače. | ||
* Vytvoříme uživatelskou skupinu <tt>samba</tt>, které práva nastavíme a přidáme do ní uživatelský účet <tt>webmaster</tt>. | * Vytvoříme uživatelskou skupinu <tt>samba</tt>, které práva nastavíme a přidáme do ní uživatelský účet <tt>webmaster</tt>. | ||
groupadd ''samba'' | groupadd ''samba'' | ||
− | usermod -aG ''samba'' '' | + | usermod -aG ''samba'' ''uzivatelsky-ucet-pro-sambu'' |
− | chown -R '' | + | chown -R ''uzivatelsky-ucet-pro-sambu'' /var/www |
chgrp -R ''samba'' /var/www | chgrp -R ''samba'' /var/www | ||
chmod 775 /var/www | chmod 775 /var/www | ||
Řádka 129: | Řádka 154: | ||
== Restart služby Samba == | == Restart služby Samba == | ||
* Musí provést správce počítače: | * Musí provést správce počítače: | ||
− | + | systemctl restart smbd | |
== Připojení sdílené složky ze druhého počítače == | == Připojení sdílené složky ze druhého počítače == | ||
* Zde uvádíme pouze velmi stručný výtah příkazů, podrobněji viz: [[Samba - připojení svazku]]. | * Zde uvádíme pouze velmi stručný výtah příkazů, podrobněji viz: [[Samba - připojení svazku]]. | ||
+ | * Jako <code>''server''</code> použijte IP adresu vašeho nového serveru. | ||
; GNU/Linux | ; GNU/Linux | ||
− | + | * Vytvořte si nový adresář (''mount point''), do kterého budete síťovou složku připojovat (vytvořte jej třeba ve svém domovském adresáři). | |
+ | * Poté proveďte | ||
+ | apt install samba-client cifs-utils | ||
smbclient -L //''server'' | smbclient -L //''server'' | ||
− | mount -t cifs //''server''/'' | + | mount -t cifs //''server''/web ''mountpoint'' -o username=''uzivatelsky-ucet-pro-sambu'' |
− | + | ||
− | + | ||
− | + | ||
+ | ; Windows | ||
+ | net use z: \\''server''\web | ||
+ | * Jako uživatelské jméno zadejte: <code>''server''\''uzivatelsky-ucet-pro-sambu''</code>. | ||
+ | * Jako heslo zadejte heslo pro připojení do Samby. | ||
== Užijte si svůj server ;) == | == Užijte si svůj server ;) == | ||
Řádka 149: | Řádka 178: | ||
# Napište do souboru nějaký kód v PHP — příklad uvádíme dále. | # Napište do souboru nějaký kód v PHP — příklad uvádíme dále. | ||
# Na svém počítači otevřete prohlížeč, zadejte adresu vašeho nového serveru a užívejte si: | # Na svém počítači otevřete prohlížeč, zadejte adresu vašeho nového serveru a užívejte si: | ||
− | http://''server | + | http://''server''/datum.php |
Příklad kódu, který můžete zadat — měl by se zobrazit aktuální čas: | Příklad kódu, který můžete zadat — měl by se zobrazit aktuální čas: | ||
Řádka 164: | Řádka 193: | ||
− | == | + | == Související stránky == |
* [[Samba - konfigurace]] | * [[Samba - konfigurace]] | ||
* [[Samba - připojení svazku]] | * [[Samba - připojení svazku]] | ||
Řádka 172: | Řádka 201: | ||
* [[Konfigurační soubory]] | * [[Konfigurační soubory]] | ||
* [[Speciální bity]] | * [[Speciální bity]] | ||
+ | * [[Instalace software v GNU/Linuxu]] | ||
+ | * [[Vzdálené připojení k počítači]] | ||
+ | |||
+ | == Zdroje == | ||
+ | * [https://www.varonis.com/blog/cifs-vs-smb/ CIFS vs. SMB] |
Aktuální verze z 18. 5. 2021, 20:53
Teorie
- Nástroj Samba představuje nejsnazší způsob přenosu souborů mezi Windows a Linuxem.
- „Sdílení souborů a tiskáren“ ve Windows je založeno na protokolu SMB
- Původně Windows používaly CIFS — implemntace SMB verze 1 od Microsoftu, později přešly na SMB 2 resp. SMB 3 (Windows 8).
- Balík Samba je svobodná implementace protokolu SMB v GNU/Linuxu.
Myšlenka
- Nainstalujeme balíčky s implementací Samby. (Viz také Instalace balíčků na server)
- Nastavíme požadovaný adresář (v našem případě kořen webového serveru /var/www) jako sdílený svazek pod názvem web. (Návod lze samozřejmě použít pro libovolnou jinou složku.)
- Vytvoříme ke svému účtu „sambové“ uživatelské jméno webmaster a nastavíme mu heslo.
- Nastavení přístupových práv k adresáři
- Vytvoříme skupinu samba.
- Zařadíme svůj účet do této skupiny.
- Povolíme do požadovaného adresáře přístup uživatelům ze skupiny samba.
Předpokládáme, že máme nainstalovaný stroj s GNU/Linuxem Debian a webovým serverem. Pro vytvoření můžete použít Návod pro instalaci webového serveru.
- K čemu mít server?
- S takto vytvořeným serverem následně můžeme:
- sdílenou složku připojit například k počítači s Windows přes službu Sdílení souborů a složek.
- Editovat kód webových stránek ve svém oblíbeném editoru a po uložení ho mít přímo připraven na takto vytvořeném pokusném serveru. (Plnohodnotnější náhrada za XAMP a podobné nástroje.)
- Můžeme ale také vytvořit souborový server třeba na Raspberry Pi (Raspbian) atd.
Všimněte si, že je mnohem pohodlnější se serverem pracovat vzdáleně přes Putty. Můžete pak použít schránku pro kopírování příkazů!
Instalace balíčků na server
- Pracujte jako správce (
sudo
), pro instalaci použijte správce balíčkůapt
. - Před instalací nezapomeňte aktualizovat seznamy repozitářů (
update
)! - Doporučujeme také nejprve aktualizovat stávající balíčky (upgrade).
apt install samba samba-common
Pozn: Pro Raspbian (Raspberry Pi) je třeba ještě doinstalovat:
apt install samba-common-bin
Konfigurace serveru
- Soubor /etc/samba/smb.conf
- Konfigurace je uložena v souboru /etc/samba/smb.conf.
- K úpravě použijte třeba editor
nano
.
Před úpravou konfiguračních souborů si vytvořte záložní kopii.
Třeba pro konfigurační soubor /etc/samba/smb.conf kopii: /etc/samba/smb.conf.orig2013-11-27.
Můžete soubor také zazálohovat do speciální složky.
- Po úpravě zkontrolujte správnost konfiguračního souboru /etc/smb.conf:
testparm konfiguracni_soubor
Dobrý zvyk radí:
- Ponechte originál konfiguračního souboru v /etc/samba/smb.conf.master (zde proveďte své změny)
- Pak vygenerujte konfigurační soubor příkazem: (čímž provedete i kontrolu správnosti)
testparm -s smb.conf.master > smb.conf
- Pro přesměrování výstupu do souboru smb.conf potřebujete spustit shell správce (
sudo -i
). Správcovský shell pak ukončíte příkazemexit
.
(Nestačí zde napsat před příkazsudo
, neuplatnilo by se na přesměrování.)
- Komentáře
- Řádky začínající znakem # nebo středníkem (;) jsou pouze komentáře.
- Znak # uvozuje vysvětlení významu jednotlivých voleb.
- Středník obvykle používáme k „vykomentování“ řádku, tedy zrušení jeho platnosti (ale přitom ho máme k dipozici pro budoucí použití).
- Konfigurace serveru
- V části týkající se konfigurace serveru povolte nebo přidejte následující volby:
[global] workgroup = WORKGROUP username map = /etc/samba/smbusers ; unix password sync = yes
Některé volby již v souboru jsou uvedeny. Odpovídající řádky pouze upravte.
S výhodou využijte funkci vyhledávání v textovém editoru (pro editor nano
zkratka Ctrl-W).
- Definice sdílených disků (uvádíme pro každý sdílený disk, v našem případě stačí jeden)
- Zakomentujte položku
[homes]
a všechny řádky pod ní
; [homes] ; comments = Home Directories ; browsable = no ; read only = yes ; create mask = 0700 ; directory mask = 0700
- Přidejte sdílenou složku
[web]
zapište na konec souboru
[web] comment = Hlavni slozka weboveho serveru path = /var/www writeable = yes create mode = 0664 directory mode = 0775 locking = yes
Restart služby Samba
- Musí provést správce počítače:
systemctl restart smbd
Vytvoření uživatelských účtů
- Přidání účtů
- Přidejte do systému uživatelský účet webmaster, který se nemůže přihlásit do systému, ale bude používán pro přihlášení přes Sambu.
useradd webmaster --shell /bin/false
- Volitelné — aliasy pro uživatelské jméno
- Chcete-li pro Sambu používat i jiné uživatelské jména (mapovaná na tento účet), přidejte do souboru /etc/samba/smbusers (nejspíš neexistuje) položku pro uživatele webmaster:
webmaster = nove_uzivatelske_jmeno_pro_sambu
- Pokud se tedy přihlásíte prostřednictvím Samby jako nove_uzivatelske_jmeno_pro_sambu, systém bude vyžadovat heslo uživatele webmaster a budou se používat pro přístup k souborům práva uživatele webmaster.
- Nastavení hesla
- Přidejte pro účet webmaster vhodné heslo pro přístup přes Sambu. Doporučujeme jiné heslo než to pro přihlášení do systému.
- V příkazovém řádku spusťte:
smbpasswd -L -a webmaster
-a
říká, že se účet přidá k účtům pro přihlašování přes Sambu. Při změně hesla už -a
nepoužíváme
Ověření funkčnosti účtu a síťové jednotky
- Nyní již můžeme ověřit vytvořené síťové jednotky (svazky).
- Pro ověření musíme doinstalovat balík samba-client viz Samba - připojení svazku.
- Pro připojení využijte vytvořený uživatelský účet
webmaster
.
smbclient -L localhost --user=uzivatelsky-ucet-pro-sambu
Nastavení přístupových práv ke složce s webem
- Pro uživatelský účet pro Sambu (webmaster) je třeba povolit přístup do zvoleného adresáře (/var/www).
- Opět musíme pracovat jako správce počítače.
- Vytvoříme uživatelskou skupinu samba, které práva nastavíme a přidáme do ní uživatelský účet webmaster.
groupadd samba usermod -aG samba uzivatelsky-ucet-pro-sambu chown -R uzivatelsky-ucet-pro-sambu /var/www chgrp -R samba /var/www chmod 775 /var/www chmod g+s /var/www chmod -R g+w /var/www
- Další materiály: Samba - konfigurace, Oprávnění pro přístup k souborům, Správa uživatelských účtů, Nastavování práv, Konfigurační soubory, Speciální bity.
Restart služby Samba
- Musí provést správce počítače:
systemctl restart smbd
Připojení sdílené složky ze druhého počítače
- Zde uvádíme pouze velmi stručný výtah příkazů, podrobněji viz: Samba - připojení svazku.
- Jako
server
použijte IP adresu vašeho nového serveru.
- GNU/Linux
- Vytvořte si nový adresář (mount point), do kterého budete síťovou složku připojovat (vytvořte jej třeba ve svém domovském adresáři).
- Poté proveďte
apt install samba-client cifs-utils smbclient -L //server mount -t cifs //server/web mountpoint -o username=uzivatelsky-ucet-pro-sambu
- Windows
net use z: \\server\web
- Jako uživatelské jméno zadejte:
server\uzivatelsky-ucet-pro-sambu
. - Jako heslo zadejte heslo pro připojení do Samby.
Užijte si svůj server ;)
- Připojte si sdílenou složku na svém počítači.
- Ve svém oblíbeném textovém editoru vytvořte ve složce soubor
datum.php
. - Napište do souboru nějaký kód v PHP — příklad uvádíme dále.
- Na svém počítači otevřete prohlížeč, zadejte adresu vašeho nového serveru a užívejte si:
http://server/datum.php
Příklad kódu, který můžete zadat — měl by se zobrazit aktuální čas:
<!DOCTYPE html> <html> <head> <meta charset="windows-1250" /> <title>Čas</title> </head> <body> <h1>Právě je: <?=date('j. n. Y H:i:s', time())?></h1> </body> </html>
Související stránky
- Samba - konfigurace
- Samba - připojení svazku
- Oprávnění pro přístup k souborům
- Správa uživatelských účtů
- Nastavování práv
- Konfigurační soubory
- Speciální bity
- Instalace software v GNU/Linuxu
- Vzdálené připojení k počítači