Sdílení souborů pomocí Samby

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Konfigurace serveru: Oprava jedné volby podle aktuální verze v Debianu - encrypt passwords = true)
(Vykomentování voleb, které nelze použít v Debian 9. Upřesňující formulace při připojování, oprava odkazu.)
(Není zobrazeno 35 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]][[Category:Informatika]][[Category:Návody]][[Category:Linux]][[Category:OSY]]
+
[[Category:VSE]][[Category:Informatika]][[Category:Návody]][[Category:Linux]][[Category:OSY]][[Category:Admin]][[Category:Samba]]
 +
 
 +
{{Based_on_Debian_9}}
  
 
== 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.
* Využívá stejný protokol jako „Sdílení souborů a tiskáren“ ve Windows.
+
* „Sdílení souborů a tiskáren“ ve Windows je založeno na protokolu SMB/CIFS (původně SMB, později vylepšený CIFS).
* Sdílení ve Windows je založeno na protokolu SMB/CIFS (původně SMB, později vylepšený CIFS).
+
 
* Balík ''Samba'' je svobodná implementace protokolu SMB/CIFS v GNU/Linuxu.
 
* Balík ''Samba'' je svobodná implementace protokolu SMB/CIFS v GNU/Linuxu.
  
 
== Myšlenka ==
 
== Myšlenka ==
* Nasdílíme složku webového serveru (<tt>/var/www</tt>) jako sdílenou složku pod názvem <tt>www</tt>.
+
# Nainstalujeme balíčky s implementací Samby. (Viz také [[#Instalace balíčků na server|Instalace balíčků na server]])
* Vytvoříme „sambového“ uživatele <tt>webmaster</tt> s vlastním heslem.
+
# 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.)
* Uživatele <tt>webmaster</tt> namapujeme ke svému vlastnímu uživatelskému účtu.
+
# Vytvoříme ke svému účtu „sambové“ uživatelské jméno <tt>webmaster</tt> a&nbsp;nastavíme mu heslo.
* Zařadíme vlastní účet do skupiny <tt>samba</tt>, kterou vytvoříme.
+
# Nastavení přístupových práv k adresáři
* Povolíme do složky webového serveru přístup uživatelům ze skupiny <tt>samba</tt>.
+
#* Vytvoříme skupinu <tt>samba</tt>.
 +
#* 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 <tt>samba</tt>.
 +
 
 +
<div class="Poznamka">
 +
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>
 +
 
 +
; K čemu mít server?
 +
#S&nbsp;takto vytvořeným serverem následně můžeme:
 +
#* sdílenou složku připojit například k&nbsp;počítači s&nbsp;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&nbsp;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>
 +
 
  
== Poznámky ==
+
== Instalace balíčků na server ==
* Návod je vyzkoušen na [http://www.debian.org/releases/ distribuci Debian ve verzi Wheezy].
+
* Pracujte jako správce (<code>sudo</code>), pro [[Instalace software v GNU/Linuxu|instalaci použijte správce balíčků <code>aptitude</code>]].
* Výcházíme z návodu: [http://rob-the.geek.nz/2009/08/setting-up-ubuntu-server-9-04.html Rob-the.Geek.nz > Setting up Ubuntu Server 9.04]
+
* 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>)]]!
* Předpokládáme nainstalovaný stroj s GNU/Linuxem Debian Wheezy. [[Instalace webového serveru|Návod pro instalaci webového serveru je zde...]]
+
* Doporučujeme také nejprve aktualizovat stávající balíčky (upgrade).
  
== Instalace balíků ==
 
* Pracujte jako správce (<code>sudo</code>), pro instalaci použijte správce balíků <code>aptitude</code>.
 
; Na serveru
 
 
  aptitude install samba samba-common
 
  aptitude install samba samba-common
 +
 +
Pozn: Pro Raspbian (Raspberry Pi) je třeba ještě doinstalovat:
 +
aptitude install samba-common-bin
  
 
== Konfigurace serveru ==
 
== Konfigurace serveru ==
Řádka 28: Řádka 46:
 
* Konfigurace je uložena v souboru <tt>/etc/samba/smb.conf</tt>.
 
* Konfigurace je uložena v souboru <tt>/etc/samba/smb.conf</tt>.
 
* K úpravě použijte třeba editor <code>nano</code>.
 
* K úpravě použijte třeba editor <code>nano</code>.
 +
<div class="Varovani">
 +
Před úpravou konfiguračních souborů si vytvořte záložní kopii.
 +
 +
Třeba pro konfigurační soubor <tt>/etc/samba/smb.conf</tt> kopii: <tt>/etc/samba/smb.conf.orig2013-11-27</tt>.
 +
 +
Můžete soubor také zazálohovat do speciální složky.
 +
</div>
 
* Po úpravě zkontrolujte správnost konfiguračního souboru <tt>/etc/smb.conf</tt>:
 
* Po úpravě zkontrolujte správnost konfiguračního souboru <tt>/etc/smb.conf</tt>:
 
  testparm ''konfiguracni_soubor''
 
  testparm ''konfiguracni_soubor''
 
<div class="Upozorneni">
 
<div class="Upozorneni">
 
Dobrý zvyk radí:
 
Dobrý zvyk radí:
* Vytvořte záložní kopii konfiguračního souboru: <tt>/etc/samba/smb.conf.orig2013-11-27</tt>.
 
 
* Ponechte originál konfiguračního souboru v <tt>/etc/samba/smb.conf.master</tt> (zde proveďte své změny)
 
* Ponechte originál konfiguračního souboru v <tt>/etc/samba/smb.conf.master</tt> (zde proveďte své změny)
 
* Pak vygenerujte konfigurační soubor příkazem: (čímž provedete i kontrolu správnosti)
 
* Pak vygenerujte konfigurační soubor příkazem: (čímž provedete i kontrolu správnosti)
 
  testparm -s smb.conf.master &gt; smb.conf
 
  testparm -s smb.conf.master &gt; smb.conf
* Pro zápis do souboru <tt>smb.conf</tt> potřebujete být správce (<code>sudo su</code>).
+
* Pro přesměrování výstupu do souboru <tt>smb.conf</tt> potřebujete spustit shell správce (<code>sudo -i</code>). Správcovský shell pak ukončíte příkazem <code>exit</code>.<br />(Nestačí zde napsat před příkaz <code>sudo</code>, neuplatnilo by se na přesměrování.)
 
</div>
 
</div>
  
Řádka 47: Řádka 71:
  
 
; 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''
security = user
+
<!-- V Deb9 asi už ne: security = user -->
 
  username map = /etc/samba/smbusers
 
  username map = /etc/samba/smbusers
  encrypt passwords = true
+
<!-- V Deb9 asi už ne: encrypt passwords = yes -->
smb passwd file = /etc/samba/smbpasswd
+
<!-- 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 67: Řádka 97:
 
  ; directory mask = 0700
 
  ; directory mask = 0700
  
* Vytvořte sdílenou složku <code>[web]</code>
+
* Přidejte sdílenou složku <code>[web]</code> &nbsp; zapište na konec souboru
 
  [''web'']
 
  [''web'']
 
  comment = ''Hlavni slozka weboveho serveru''
 
  comment = ''Hlavni slozka weboveho serveru''
Řádka 75: Řádka 105:
 
  directory mode = 0775
 
  directory mode = 0775
 
  locking = yes
 
  locking = yes
 +
 +
== Restart služby Samba ==
 +
* Musí provést správce počítače:
 +
/etc/init.d/samba restart
  
 
== Vytvoření uživatelských účtů ==
 
== Vytvoření uživatelských účtů ==
<!--; Přidání účtů
+
; Přidání účtů
* Definice uživatelských jmen a mapování na lokální uživatelské účty je v souboru <tt>/etc/samba/smbusers</tt>.
+
* Přidejte do systému uživatelský účet <tt>webmaster</tt>, který se nemůže přihlásit do systému, ale bude používán pro přihlášení přes Sambu.
* Formát voleb je:
+
  useradd webmaster --shell /bin/false
''SMBUSERNAME'' = ''LOCALUSERNAME''
+
* Vytvořte si tedy uživatele pro Sambu, kterého provážete s vlastním uživatelským účtem:
+
  ''webmaster'' = ''uzivatelske_jmeno''-->
+
  
; Nastavení hesla uživatelům:
+
<div class="Poznamka">
* Nastavte pro své uživatelské jméno vhodné heslo pro přístup přes Sambu. Doporučujeme jiné heslo než to pro přihlášení do systému.
+
; Volitelné &mdash; 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>:
 +
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>.
 +
</div>
 +
 
 +
; Nastavení hesla:
 +
* Přidejte pro účet <tt>webmaster</tt> 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:
 
* V příkazovém řádku spusťte:
  smbpasswd -L -a ''uživatelské_jméno''
+
  smbpasswd -L -a webmaster
 +
<div class="Poznamka">Parametr <code>-a</code> říká, že se účet přidá k účtům pro přihlašování přes Sambu. Při změně hesla už <code>-a</code> nepoužíváme</div>
 +
<!-- smbpasswd -L -a webmaster ??? ''vase_uzivatelske_jmeno'' -->
 +
 
 +
 
 +
== 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
+
== Nastavení přístupových práv ke složce s&nbsp;webem ==
* Pro váš uživatelský účet je třeba povolit přístup do složky webu (<tt>/var/www</tt>).
+
* 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>web</tt>, které práva nastavíme a přidáme do ní svůj uživatelský účet.
+
* 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 ''web''
+
  groupadd ''samba''
  usermod -aG ''web'' ''uzivatelske_jmeno''
+
  usermod -aG ''samba'' ''uzivatelsky-ucet-pro-sambu''
  chown -R ''uzivatelske_jmeno'' /var/www
+
  chown -R ''uzivatelsky-ucet-pro-sambu'' /var/www
  chgrp -R ''web'' /var/www
+
  chgrp -R ''samba'' /var/www
 
  chmod 775 /var/www
 
  chmod 775 /var/www
 
  chmod g+s /var/www
 
  chmod g+s /var/www
 
  chmod -R g+w /var/www
 
  chmod -R g+w /var/www
* Prodrobnější informace viz: [[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]].
+
* 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]].
  
  
Řádka 106: Řádka 154:
 
* Musí provést správce počítače:
 
* Musí provést správce počítače:
 
  /etc/init.d/samba restart
 
  /etc/init.d/samba restart
 +
  
 
== 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]].
 +
* Jako <code>''server''</code> použijte IP adresu vašeho nového serveru.
 +
 
; GNU/Linux
 
; GNU/Linux
* Pokud se k serveru chcete připojovat z GNU/Linuxu, je třeba na klientském počítači nainstalovat:
+
* 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).
  aptitude install samba-client smbfs
+
* Poté proveďte
* Připojení složky:
+
  aptitude install samba-client cifs-utils
   
+
smbclient -L //''server''
 +
  mount -t cifs //''server''/''slozka''  ''mountpoint''  -o username=''uzivatelsky-ucet-pro-sambu''
 +
 
 
; Windows
 
; Windows
* Chcete-li se k serveru připojit z Windows, lze použít standardní sdílení souborů &mdash; není třeba nic instalovat.
+
net use z: \\''server''\''slozka''
  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 ;) ==
 +
# 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 <code>datum.php</code>.
 +
# Napište do souboru nějaký kód v&nbsp;PHP &mdash; 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&nbsp;užívejte si:
 +
  http://''server''/datum.php
 +
 
 +
Příklad kódu, který můžete zadat &mdash; měl by se zobrazit aktuální čas:
 +
&lt;!DOCTYPE html>
 +
&lt;html>
 +
&lt;head>
 +
&lt;meta charset="windows-1250" />
 +
&lt;title>Čas&lt;/title>
 +
&lt;/head>
 +
&lt;body>
 +
&lt;h1>Právě je: &lt;?=date('j. n. Y H:i:s', time())?>&lt;/h1>
 +
&lt;/body>
 +
&lt;/html>
 +
 
  
== Další stránky ==
+
== Související stránky ==
 
* [[Samba - konfigurace]]
 
* [[Samba - konfigurace]]
 +
* [[Samba - připojení svazku]]
 
* [[Oprávnění pro přístup k souborům]]
 
* [[Oprávnění pro přístup k souborům]]
 
* [[Správa uživatelských účtů]]
 
* [[Správa uživatelských účtů]]
Řádka 124: Řá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]]

Verze z 14. 5. 2019, 10:13

Na této stránce používáme distribuci Debian ve verzi 9 (Stretch). Na ostatních distribucích budou nejspíš k dispozici podobné nebo stejné nástroje a tipy.

Obsah

Teorie

Myšlenka

  1. Nainstalujeme balíčky s implementací Samby. (Viz také Instalace balíčků na server)
  2. 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.)
  3. Vytvoříme ke svému účtu „sambové“ uživatelské jméno webmaster a nastavíme mu heslo.
  4. 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?
  1. 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.)
  2. 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

aptitude install samba samba-common

Pozn: Pro Raspbian (Raspberry Pi) je třeba ještě doinstalovat:

aptitude install samba-common-bin

Konfigurace serveru

Soubor /etc/samba/smb.conf

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.

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říkazem exit.
    (Nestačí zde napsat před příkaz sudo, neuplatnilo by se na přesměrování.)
Komentáře
Konfigurace serveru
[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)
; [homes]
; comments = Home Directories
; browsable = no
; read only = yes
; create mask = 0700
; directory mask = 0700
[web]
comment = Hlavni slozka weboveho serveru
path = /var/www
writeable = yes
create mode = 0664
directory mode = 0775
locking = yes

Restart služby Samba

/etc/init.d/samba restart

Vytvoření uživatelských účtů

Přidání účtů
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
smbpasswd -L -a webmaster
Parametr -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

smbclient -L localhost --user=uzivatelsky-ucet-pro-sambu


Nastavení přístupových práv ke složce s webem

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


Restart služby Samba

/etc/init.d/samba restart


Připojení sdílené složky ze druhého počítače

GNU/Linux
aptitude install samba-client cifs-utils
smbclient -L //server
mount -t cifs //server/slozka  mountpoint  -o username=uzivatelsky-ucet-pro-sambu
Windows
net use z: \\server\slozka


Užijte si svůj server ;)

  1. Připojte si sdílenou složku na svém počítači.
  2. Ve svém oblíbeném textovém editoru vytvořte ve složce soubor datum.php.
  3. Napište do souboru nějaký kód v PHP — příklad uvádíme dále.
  4. 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

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje