Sdílení adresářů pomocí serveru Samba
OS typu Windows používají protokol Microsoft SMB (Server Message Block) známý také pod jménem CIFS (Common Internet File System). Tento protokol umožňuje sdílení souborů, adresářů, tiskáren apod.
Linux tento protokol implementuje ve formě balíku Samba. Samba je vydána pod GNU General Public licencí. Systém umožňuje integraci OS typu Windows do linuxových sítí. Na straně Windows přitom není zapotřebí instalovat žádný speciální software.
Poznámka: Problematikou sdílení souborů a adresářů mezi počítači s operačním systémem Fedora se zabývá kapitola Přípojování sdílených adresářů. Velice podrobnou knihu o Sambě v anglickém jazyce naleznete na http://eee.uwaterloo.ca/UsingSamba/index.html.
Instalace serveru Samba
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Přidání repozitáře.
Server Samba lze nainstalovat přes terminál
yum -y install samba yum -y install samba-client yum -y install system-config-samba
swat
Pomocí příkazu
yum -y install samba-swat
je možné také doinstalovat rozhraní swat1) pro konfiguraci aplikace Samba. Toto rozhraní se ovládá z webového prohlížeče. Před použitím tohoto rozhraní je nutné nahradit řádek
disable = yes
v souboru /etc/xinetd.d/swat
řádkem
disable = no
Dále je zapotřebí restartovat démona xinetd
2), který je zodpovědný za spouštění utility swat. swat lze pak spustit tak, že do adresové řádky prohlížeče zadáte http://localhost:901
popř. http://127.0.0.1:901
. Na výzvu zadejte jméno uživatele root
a heslo superuživatele. Součástí webového rozhraní je také off-line dokumentace k aplikaci Samba.
Konfigurace pomocí grafického rozhraní
Poznámka: Jestliže je třeba přidat uživatele, přečtěte si kapitolu Přidání, editace a mazání uživatelů a skupin.
Server Samba lze nastavit pomocí grafického rozhraní Samba (balíček system-config-samba).
popř. pomocí grafického rozhraní swat.
Takto je možné nastavit sdílený adresář a přiřadit mu uživatele, kteří k němu mohou přistupovat.
Konfigurace pomocí příkazové řádky
Následující text se zabývá základním nastavením Samby pomocí příkazové řádky. Podrobnosti týkající se nastavení Samby naleznete na stránkách http://eee.uwaterloo.ca/UsingSamba/index.html popř. http://samba.org/samba/docs/man/Samba-HOWTO-Collection/.
Kontrola protokolu TCP/IP
Aby bylo možné sdílet adresáře mezi Windows a Linuxem je třeba, aby byl na počítači s Windows správně nastaven protokol TCP/IP. Na straně Fedory by problémy s podporou tohoto protokolu nastat neměly.
Funkčnost protokolu TCP/IP lze velice snadno ověřit z Linuxu pomocí
ping -c 10 ip_adresa
Poznámka: IP adresu počítače s nainstalovanými Windows XP lze zjistit následujícím způsobem. Klikněte na Start → Ovládací panely → Síťová připojení. V okně Síťová připojení pak dvakrát klikněte na ikonu, která znázorňuje Vaše síťové připojení. Přejděte na záložku Podpora a opište číslo uvedené za položkou Adresa IP3). Další možností, jak získat IP adresu, je v příkazovém řádku Windows zadat ipconfig
.
Výstup příkazu ping -c 10 ip_adresa
by měl vypadat přibližně následovně
PING 192.168.2.125 (192.168.2.125) 56(84) bytes of data. 64 bytes from 192.168.2.125: icmp_seq=1 ttl=64 time=0.068 ms 64 bytes from 192.168.2.125: icmp_seq=2 ttl=64 time=0.071 ms 64 bytes from 192.168.2.125: icmp_seq=3 ttl=64 time=0.072 ms 64 bytes from 192.168.2.125: icmp_seq=4 ttl=64 time=0.072 ms 64 bytes from 192.168.2.125: icmp_seq=5 ttl=64 time=0.072 ms 64 bytes from 192.168.2.125: icmp_seq=6 ttl=64 time=0.070 ms 64 bytes from 192.168.2.125: icmp_seq=7 ttl=64 time=0.073 ms 64 bytes from 192.168.2.125: icmp_seq=8 ttl=64 time=0.093 ms 64 bytes from 192.168.2.125: icmp_seq=9 ttl=64 time=0.072 ms 64 bytes from 192.168.2.125: icmp_seq=10 ttl=64 time=0.072 ms --- 192.168.2.125 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9000ms rtt min/avg/max/mdev = 0.068/0.073/0.093/0.010 ms
Jestliže tento „test“ dopadl úspěšně, můžete pokračovat. V opačném případě budete muset nastavit síťové protokoly na počítači s Windows.
Nastavení uživatelských účtů
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Instalace serveru Samba
Nezbytný předpokladem fungování Samby je správné nastavení uživatelských účtů ve Fedoře, Windows a Sambě.
Samba
Noví uživatelé Samby jsou mapováni na již existující systémové uživatele Fedory. Tato vazba je definována v souboru
/etc/samba/smbusers
.
gedit /etc/samba/smbusers
Do souboru smbusers
přidejte následující řádek
systemovy_uzivatel = samba_uzivatel1 [ samba_uzivatel2 ... ]
a soubor uložte. Tento zápis slouží k výše zmiňovanému mapování mezi systémovými uživateli a uživateli Samby. Defaulně je v souboru smbusers
uvedeno
# Unix_name = SMB_name1 SMB_name2 ... root = administrator admin nobody = guest pcguest smbguest
Superuživatel je tak např. pro účely Samba serveru namapován na uživatele administrator
a admin
. Obecně se doporučuje používat pro účely Samby jména uživatelů odpovídající systémovým uživatelům.
Dále je třeba nově vytvořenému uživately Samby nastavit heslo. Heslo konkrétního uživatele je možné nastavit popř. editovat pomocí
smbpasswd -a samba_uzivatel1
Smazat uživatele lze pak pomocí
smbpasswd -x samba_uzivatel1
a následným smazáním příslušného řádku v souboru /etc/samba/smbusers
.
Windows
Na počítači s Windows vytvořte účet, jehož uživatelské jméno a heslo se shoduje s linuxovým účtem vybraného uživatele. Cílem tedy je, aby pod Linuxem a Windows existovali dva „stejní“ uživatelé - v opačném případě nebude níže popsaný postup fungovat.
Nového uživatele pod Windows XP vytvoříte tak, že přes nabídku Start → Nastavení → Ovládací panely vyvoláte okno Ovládací panely, kde klinete na ikonu Uživatelské účty. V okně Uživatelské účty pokračujte odkazem Vytvořit nový účet a postupujte dle instrukcí průvodce.
Nastavení firewallu
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Otevření / uzavření portů.
Nezbytnou podmínkou pro fungování Samby je její povolení na firewallu. Port 901, přes který Samba komunikuje, je v případě Fedory standardně uzavřen. Povolit komunikaci přes tento port můžete pomocí nabídky Systém → Správa → Firewall.
Připojení sdílených adresářů na počítači s OS typu Windows
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Instalace serveru Samba.
- Přečtěte si kapitolu Kontrola protokolu TCP/IP.
- Přečtěte si kapitolu Nastavení uživatelských účtů.
- Přečtěte si kapitolu Nastavení firewallu.
Sdílený adresář
Po té, co jste zkontrolovali funkčnost protokolu TCP/IP, provedli nezbytná nastavení uživatelských účtů a otevřeli port 901 na firewallu (ve Fedora Workstation by měl být ve výchozím stavu povolený), je možné přistoupit k vytvoření sdíleného adresáře. Ve Windows XP sdílený adresář vytvoříte z normálního adresáře tak, že po dvoukliku na ikonu adresáře vybere z nabídky položku Vlastnosti a v ní záložku Sdílení, kde provedete potřebná nastavení.
Připojení v Nautilu
V Linuxu se můžete ke vzdálenému adresáři připojit nejjednodušeji ve správci souborů Nautilus, kde ve sloupci nalevo kliknete na Připojit k serveru. Adresu serveru zadejte ve tvaru, jak to můžete vidět na obrázku níže.
Připojení v příkazové řádce
Dalším krokem je vytvoření adresáře na počítači s Linuxem, kam připojíte obsah sdíleného adresáře.
mkdir /media/smb chmod 777 /media/smb
Předpokládejme, že počítač s Windows, na kterém je uložen sdílený adresář, má IP adresu 192.168.2.125 a cesta k tomuto adresáři je C:/Linux
. Dále předpokládejme, že na linuxovém stroji je přípojným bodem adresář /media/smb
.
Samotné připojení adresáře pak provedete pomocí
mount -t cifs //192.168.2.125/Linux /media/smb
odpojení pak pomocí
umount -t cifs /media/smb
Poznámka: Příkazy mount
a umount
může standardně používat pouze superuživatel.
Modifikace fstab pro automatické připojení sdílených adresářů
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Znovupřipojení všech zařízení z /etc/fstab.
Předpokládejme, že sdílení adresářů bylo nastaveno podle výše uvedeného návodu. Pomocí textového editoru vytvořte soubor
.smbcredentials
gedit /root/.smbcredentials
do kterého následně vložíte řádky
username=samba_uzivatel1 password=heslo
Nově vytvořený soubor uložte. Dále nastavte k tomuto souboru přístupová práva.
chmod 700 /root/.smbcredentials
Proveďte zazálohování souboru fstab
cp /etc/fstab /etc/fstab_backup
a tento soubor otevřete v textovém editoru.
gedit /etc/fstab
Na konec tohoto souboru vložte řádek
//192.168.2.126/cesta_k_sdilenemu adresari /media/smb cifs credentials=/root/.smbcredentials 0 0
a zeditovaný soubor uložte.
Poznámka: Po té, co vložíte do souboru fstab
výše uvedený řádek, je třeba ještě vložit prázdný řádek klávesou ENTER. Jestliže soubor fstab
nebude končit prázdnou řádkou, bude systém při jeho načítání v průběhu bootování hlásit chybu.
Připojení sdílených souborů počítače s Fedorou
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Instalace serveru Samba.
- Přečtěte si kapitolu Kontrola protokolu TCP/IP.
- Přečtěte si kapitolu Nastavení uživatelských účtů.
- Přečtěte si kapitolu Zjistění IP adresy počítače s Fedorou.
- Přečtěte si kapitolu Nastavení firewallu.
V předchozím odstavci jsme připojovali sdílený adresář uložený na počítači s OS Windows. Nyní zkusíme opačný postup - budeme připojovat sdílený adresář uložený na počítači s Fedorou.
Konfigurační soubor Samby
Nejprve je třeba zkontrolovat funkčnost protokolu TCP/IP na počítači s OS Windows, provést nezbytná nastavení uživatelských účtů a otevřít port 901 na firewallu. Dalším krokem je pak úprava konfiguračního souboru aplikace Samba. Správnost jeho syntaxe a místo uložení lze zjistit pomocí příkazu
testparm
Výstup tohoto příkazu pak vypadá přibližně následovně
Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Global parameter printcap name found in service section! Processing section "[data]" Loaded services file OK. WARNING: passdb expand explicit = yes is deprecated Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions
Z výpisu je patrné, že konfigurační soubor smb.conf
se nachází v adresáři /etc/samba
. Před samotnou modifikací proveďte zálohu původního konfiguračního souboru.
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Následně otevřete konfigurační soubor v textovém editoru
gedit /etc/samba/smb.conf
a obsah souboru zaměňte za4)
[global] workgroup = SKUPINA wins support = Yes security = user username map = /etc/samba/smbusers [homes] read only = No map archive = No browseable = No [printers] path = /var/tmp printable = Yes browseable = No [data] path = /opt/macky read only = No map archive = No
V konfiguračni je třeba dále upravit:
- v sekci
global
hodnotu parametruworkgroup
na jméno pracovní skupiny, do které patří oba počítače - v sekci
data
nastavit v parametrupath
cestu ke sdílenému adresáři
Poznámka: Jméno pracovní skupiny zjistíte v případě Windows XP následovně. Dvojklikem na ikonu Tento počítač otevřete nabídku, ve které vyberete položku Vlastnosti. V okně Vlastnosti systému klikněte na záložku Název počítače a opište jméno uvedené za položkou Pracovní skupina.
Jestliže chcete přidat více sdílených adresářů, přidejte do souboru smb.conf
více sekcí se stejnou syntaxí, jako sekce
data
.
[data1] path = /opt/macky/adresar1 read only = No map archive = No [data2] path = /home/macky/adresar2 read only = No map archive = No
Připojení / odpojení sdíleného adresáře
Dále je třeba spustit démoda smbd
. To se provede pomocí příkazu
/usr/sbin/smbd
Po té, co je démon spuštěn, zadejte pro připojení sdíleného adresáře do příkazové řádky
smbclient //192.168.2.126/data -U samba_uzivatel1%heslo
kde uvedená IP adresa „patří“ tentokráte počítači s Fedorou5) a samba_uzivatel1
představuje Samba alias pro uživatele, který je „společný“ Fedoře a Windows.
Nyní nastal čas přesunout s k počítači s Windows. Přihlašte se pod stejným uživatelem, jakého jste specifikovali parametrem -U
u výše uvedeného příkazu smbclient
. Klikněte na Místa v síti a v části Práce se sítí pak na ikonou Přidat místo v síti. Pokračujte tlačítkem Další a po té ikonou Jiné umístění v síti. Pro namapování sdíleného adresáře specifikovaného v smb.conf
v sekci data
zadejte
\\192.162.2.126\data
a potvrďte. Po chvíli by se mělo otevřít okno s obsahem sdíleného adresáře.
/etc/rc.d/init.d/xinetd restart
.