Linux jako řadič domény (samba) v místní síti
(Původní článek je průběžně doplňován a revidován)
V tomto seriálu budeme stavět malou domácí síť, kterou nazývám „soukromá“, protože nebudu popisovat, jak ji připojit k nějaké síti cizí (např. internetu).
Úvod
Asi si říkáte, že na AbcLinuxu podobný článek již vyšel, ale brzy zjistíte, že cíl našeho snažení bude celkem odlišný. Předem upozorňuji, že se stále pokládám pouze za mírně pokročilého uživatele a ani tento seriál nebude psaný pro profesionálního správce linuxového serveru. Zde zmíněný postup je jedním, nikoliv jediným možným řešením pro stavbu podobné sítě, a proto rád uvítám vaše návrhy na zlepšení v diskusi pod článkem.
Jak bude naše síť vypadat?
Síť se bude skládat z jednoho linuxového serveru a dvou stanic se systémy MS Windows verze Pro. Stanice budou využívat několika služeb, běžících na serveru, včetně Samba serveru, který bude fungovat jako primární doménový řadič. To znamená, že náš server bude zajišťovat centrální správu sítě a uživatelů.
Použít Linux na serveru a Windows na stanicích mi připadá jako v dnešní době vhodně využitelné řešení. Instalace všech prostředků, které budeme v tomto seriálu používat na serveru, je relativně velmi jednoduchá a rychlá a tím pádem efektivní. Pokud bychom třeba později chtěli připojit naší síť do internetu, mít na serveru Linux je z bezpečnostního hlediska výhodné a stanice s Windows jsou zase dobře použitelné tam, kde nemáme k dispozici uživatele zvyklé na Linux (kterých je stále většina). Navíc, chceme-li vybudovat podobné síťové řešení v nějaké fungující firmě, je veliká šance, že se zde již stanice s Windows nacházejí. Jediné dvě věci, které tedy bude nutné udělat, je nastavení serveru a přepnutí klientů s Windows do nově vytvořené domény NT.
Na stanicích lze samozřejmě lehce použít i Linux, čímž lze vyhovět i uživatelům, kteří s produktem Windows z nějakého důvodu nepracují. Ke sdíleným prostředkům našeho Samba serveru z linuxové stanice se totiž jednoduše dostaneme přes aplikaci smbclient
. Nastavením linuxové stanice se zde však zabývat nebudeme, protože to již řešil tento článek.
Popis všech důležitých služeb běžících na našem serveru, jejichž konfiguraci si budeme v našem seriálu popisovat, je zde:
- DHCP server – slouží pro dynamické přidělování různých informací našim stanicím – např. IP adres. Využíváme DHCP server od Internet Software Consortium, který by měl být součástí většiny distribucí.
- DNS server – nástroj na překlad názvů hostitelů na IP adresy. Budeme využívat software BIND ve verzi 9 (já mám verzi 9.2.3).
- Samba Server – Souborový a tiskový server pro poskytování těchto prostředků SMB klientům jako je MS Windows. Je nutné mít Sambu alespoň ve verzi 2.2, protože starší verze nemůže sloužit jako primární doménový řadič pro domény NT (což je vlastnost, kterou budeme potřebovat). Já používám Sambu ve verzi 3.0.4.
- Postfix – poštovní server, aby si uživatelé mohli v rámci naší sítě posílat e-maily. Používám verzi 2.1.4.
- Další služby jsou volitelné podle potřeby. V úvahu připadá např. HTTP server Apache.
K čemu je to všechno dobré?
Určitě si říkáte, že provozovat DHCP, DNS či mailový server v takto malé síti je nesmysl. Vím, že existují věci jako statické přidělení IP adresy či soubor /etc/hosts
, ale myslím si, že nakonec naše sít muže sloužit pouze jako prototyp či pomůcka pro stavění sítě větší, kde se tyto zmíněné služby s výhodou využijí, a kde je postup konfigurace stejný. A nikdy není na škodu se naučit něco nového.
Siť tohoto typu se dá využít v domácnosti, či menší firmě, kde se sdílení domácích adresářů pomocí Samby, či zmíněné posílání e-mailů, hodí. Neměl by být problém připojit naší síť k jiné síti (internetu). V seriálu se tím zatím zabývat nebudu, ale je možné, že se k tomu v budoucnu vrátím.
Co budeme ještě potřebovat?
Kromě zmíněných programů budeme samozřejmě potřebovat nějaké počítače. Jak bylo zmíněno, v článku budu popisovat síť s jedním serverem a dvěma stanicemi, avšak s přidáváním (či odebíráním) stanic by neměl být problém. Počítače mám spojené pomocí 8 portového ethernetového switche DeXlan a klasickými ethernetovými kroucenými dvoulinkami. Síťování tak funguje spolehlivě, takže mohu toto řešení doporučit.
Chod serveru zajišťuje Slackware Linux 10.0, veškerá popisovaná nastavení a konfigurace se tedy týkají této distribuce. Odlišnost nastavení v 99 % ostatních distribucí však bude maximálně v jiném umístění konfiguračního souboru.
Vstupní předpoklady
Nebudu zde popisovat instalaci Linuxu, Windows ani potřebných programů, protože to není hlavní náplní tohoto článku. Pouze podotknu, že je výhodné mít Linux nějak šikovně rozdělený na oddíly (alespoň samostatný oddíl pro /home
, avšak lepší je oddělit i /tmp
a /var
).
Předpokládám tedy, že máte operační systémy i výše zmíněné programy správně nainstalovány a připraveny k použití. Také je nutno zdůraznit, že veškerá konfigurace serveru se bude skládat z editací konfiguračních souborů a prací na příkazové řádce, a tak se předpokládá že vám tyto činnosti nejsou úplně cizí (grafické prostředí nejlépe na server vůbec neinstalovat). Pro všechna nastavení je také nutné mít oprávnění uživatele root.
Soukromá síť – II
Začínáme
Začneme na serveru. Aby byl tento počítač identifikovatelný v síti, musíme jeho síťovému zařízení přiřadit IP adresu a počítači jméno a doménu, do které se bude hlásit. To lze udělat několika způsoby, např. (na Slackwaru), pomocí nástroje pkgtool
nebo editací souboru /etc/rc.d/rc.inet1.conf
. Na přiřazení IP adresy nedoporučuji nástroj ifconfig
, protože pouhé nastavení pomocí něj by nepřežilo další bootovací proces. Každá distribuce používá nějaký nástroj na konfiguraci síťového zařízeni (např. na Slackwaru zmíněný pkgtool
), tak jej využijte. Hodnoty, které používám na svém serveru, jsou:
- IP adresa: 192.168.1.1 (IP adresa používaná pro lokální sítě, která nefunguje v prostředí internetu. Pokud nemáte nějaký zvláštní důvod použít jinou, použijte tuto, nic tím nezkazíte).
- Síťová máska: 255.255.255.0
- Jméno počítače: server
- Doména: doma.cz
Více informací o IPv4 adresách a síťování:
https://cs.wikipedia.org/wiki/Priv%C3%A1tn%C3%AD_s%C3%AD%C5%A5
https://cs.wikipedia.org/wiki/Maska_s%C3%ADt%C4%9B
Přidání skupin a uživatelů
Než budeme moci našim stanicím nabízet jakékoliv služby, měli bychom na serveru vytvořit nějaké uživatele a jejich domovské adresáře. Předtím je v našem případě také výhodné upravit soubor /etc/login.defs
a nastavit hodnotu no
k proměnné DEFAULT_HOME
. V budoucnu budeme totiž vytvářet uživatele, které nebudeme chtít nikdy přihlásit do systému, a toto nastavení nám zajistí, že se uživatel nebude moci přihlásit, pokud nebude možné po loginu vstoupit do domovského adresáře. Když jim domovský adresář nevytvoříme, máme po starostech. Dále můžeme do adresáře /etc/skel
zkopírovat všechny soubory, které budeme chtít mít automaticky nakopírované do domovského adresáře nově přidaného uživatele. Potom už můžeme přidat novou skupinu:
groupadd -g 1001 kamil |
Tento příkaz nám přidá skupinu kamil s identifikačním číslem skupiny 1001. Záleží na nás, zda chceme mít pro každého uživatele samostatnou skupinu nebo je všechny přidávat do skupiny users
. Pokud je to tak, novou skupinu samozřejmě přidávat nemusíme.
useradd -c "Kamil Kantar" -d /home/kamil -g 1001 \ |
Tento příkaz přidá uživatele kamil (UID 1001, GID 1001), nastaví jeho domovský adresář na /home/kamil
(a zároveň jej vytvoří), zkopíruje do něj soubory z /etc/skel
a jako shell se nastaví /bin/bash
.
Příkazem
passwd kamil |
nastavíme uživateli kamil heslo, které si po přihlášení může sám změnit opět příkazem passwd
. Přidáme ještě alespoň jednoho uživatele a můžeme jim vytvořit souborové kvóty.
Souborové kvóty
Pomocí souborových kvót můžeme našim uživatelům omezit počet a velikost souborů pro jednotlivé diskové oddíly. To se nám bude později hodit, aby naši uživatelé nezaplnili pevný disk serveru všemožnými, mnohdy zbytečnými, soubory. Když budou omezeni souborovými kvótami, budou nuceni drahocenným diskovým prostorem šetřit. Abychom mohli na určitých oddílech kvót využívat, je nutné je mít oddělené od hlavního souborového systému ( / ) a zapnutou podporu kvót v jádře (kernelu) Linuxu.
Pozn.: Ve skutečnosti můžeme vytvořit kvóty i když máme pouze jediný souborový systém, ale potom budou naše omezení platit i pro dočasné soubory (v adresáři /tmp
), což je oddíl, který by neměl být pro naše uživatele omezený. (Adresář /tmp
bychom měli, spíše než omezovat, pravidelně mazat.)
Budeme využívat pouze uživatelské kvóty (nikoliv skupinové) a sice na oddíle /home
a /var
. Proto je nutné upravit soubor /etc/fstab
a přidat parametry quota
a usrquota
na řádky týkající se těchto oddílů. Výsledek může vypadat např. takto:
/dev/hdb6 /var ext3 defaults,nosuid,nodev,noexec,usrquota,quota 1 2 /dev/hdb8 /home ext3 defaults,nosuid,nodev,usrquota,quota 1 2 |
Pak restartujeme systém nebo znovu připojíme všechny oddíly z tabulky /etc/fstab
(příkazem mount -a o remount
). Pokud si jsme jisti, že nás nyní nebude rušit žádný proces, můžeme rovnou zapnout kvóty. Jinak se raději příkazem init 1
přepneme do jednouživatelského režimu.
quotacheck -avu |
Tímto příkazem potom spustíme program quotacheck, který zjistí velikost souborů uživatelů a připraví vše ostatní pro používání kvót. Pak restartujeme systém. Pokud vše naběhne v pořádku, můžeme našim uživatelům vytvořit kvóty. Pokud víme, že na náš systém budeme přidávat více uživatelů s podobnými potřebami (jako jsou nároky na diskový prostor), můžeme si vytvořit jakési prototypové uživatele a podle nich potom uživatelům přiřazovat kvóty. Vytvoříme prototyp uživatele normal user.
groupadd -g 900 prototypy |
Prvním příkazem přidáme skupinu prototypy. GID je dobré mít menší než 1000, protože se nejedná o klasického uživatele. Druhý příkaz přidá prototyp uživatele normal user, patřící do skupiny prototypy a jehož UID je opět menší než 1000. Pokud chceme, můžeme si stejným způsobem přidat další prototypy, např. pro významnější uživatele.
edquota normal_user |
Po zadání tohoto příkazu se spustí editor (ve většině případů vim
) v němž zadáme prototypu nornal_user uživatelskou kvótu.
Disk quotas for user normal_user (uid 901): Filesystem blocks soft hard inodes soft hard /dev/hdb6 0 0 0 0 0 0 /dev/hdb8 0 11000 12000 0 900 950 |
Z výpisu vidíme, že jsme zadali kvóty pro oddíl hdb8 (v našem případě oddíl /home
, kde mají uživatelé své domovské adresáře). Pole soft
určuje velikost diskového prostoru (resp. počet souborů), kterou muže uživatel dočasně překročit, pole hard
už systém nedovolí překročit nikdy. V našem příkladě jsme definovali hodnotu soft něco přes 10MB (11000KB) a zároveň 900 souborů a hodnotu hard 12000KB, resp. 950 souborů. Uložíme změny a ukončíme editor (ve vim
u příkazem :wq
).
Nakonec příkazem
edquota -p normal_user kamil tomas jana |
přidáme kvóty definovaného prototypu normal_user uživatelům kamil, tomas a jana. Jestli se nám to povedlo, můžeme zkontrolovat příkazem
quota jmeno_uzivatele |
Více o uživatelských kvótách se dozvíte v článku Diskové kvóty.
Jak to pracuje
Tímto článkem pravděpodobně neřeknu zkušenějším správcům Linuxu nic nového. Ale vždy se najde dostatečný počet začínajících, kteří potřebují nějakým způsobem omezit roztahovačné uživatele a nevědí, jak na to. Ale nakonec i zkušenější se někdy dají nachytat: „Strčím do serveru 160 GB disk, to ti čuníci hned tak nezapráskají…“ Jenže po pár týdnech nevycházejí z údivu, když je disk ze sedmadevadesáti procent plný životně důležitých dat – zálohy nějakého obskurního účetního serveru, který byl zrušen už v prvé polovině devadesátých let minulého století, zálohy záloh, patnáct celovečerních filmů, čtyři PST soubory, každý o velikosti neuvěřitelných dvou GB (jeden originál a tři nepostradatelné zálohy), kopie instalačního CD Windows 95 (a samozřejmě záloha)…
Disky sice dneska nejsou příliš drahé, ale každého rozumného správce musí po uklidnění a odložení studeného obkladu z čela napadnout, že kupovat další disk možná nebude ideální řešení. No a protože služební brokovnice nebývá ve firmách zcela obvyklá, je nutné sáhnout po řešení někde mezi fyzickou likvidací a koupí dalšího disku. Takovým řešením mohou být diskové kvóty.
Diskové kvóty nejsou jen jednoduchým omezením diskového prostoru. Po správné konfiguraci jsou uživatelé omezování ve svém užívání hned několika způsoby (ponechávám anglické názvy, protože ty se používají při konfiguraci):
Hard limit
Pevná mez, přes kterou vlak nejede. Uživateli se nikdy nepodaří na disk uložit více, než je uvedeno v tomto parametru.
Soft limit
„Nezávazná mez“ – uživatel může uložit na disk i více, ale při překročení této meze dostane od systému varování.
Inodes, Blocks
Kvóty lze nastavit jak na celkový objem dat na disku, tak na počet souborů.
Grace period
Uživatel může dočasně uložit na disk více, než je uvedeno v parametru „soft limit“ na dobu zadanou parametrem „grace period“. Po uplynutí této doby se uživateli nepodaří na disk uložit více, i když ještě nepřekročil mez zadanou parametrem „hard limit“.
Limity lze pochopitelně nastavovat pro každého uživatele nebo skupinu uživatelů zvlášť. Omezit lze jak celkovou velikost souborů, tak i jejich počet.
Nutné ingredience
Základním předpokladem pro fungování diskových kvót je podpora v kernelu. V howto je doporučováno implementovat diskové kvóty opatchováním kernelu. Nicméně osobně bych se tomuto postupu vyhnul. V inteligentní distribuci by měly být diskové kvóty součástí systému a mělo by postačovat pouze nainstalovat potřebné balíčky. Není-li ve vaší distribuci podpora kvót, sáhněte raději po nějaké jiné distribuci. Ta vaše bude orientovaná pravděpodobně více na desktop a na serverové použití bude méně vhodná.
Osobně používám distribuci Red Hat (už od verze 3) a můžu zodpovědně prohlásit, že kvóty byly určitě ve verzi 4.2 (nejstarší CD, které se mi válí v šuplíku) – s největší pravděpodobností už dříve. V distribuci Red Hat stačí nainstalovat balíček quota a zkonfigurovat systém.
Vlastnímu kernelu bych se vyhnul i z toho důvodu, že existují dvě různé verze kvót. Zatímco Red Hat 8 například podporuje novější verzi, standardní kernel stejné verze (údajně) používá verzi starší. Potom samozřejmě můžete čekat nečekané, když si novější utility z distribuce nebudou rozumět s kernelem.
Dostanete-li se ovšem do situace, kdy distribuce kvóty neobsahuje a změna z jakéhokoliv důvodu není možná, najdete potřebné balíky zde:
Jádro ftp://ftp.kernel.org Jaderná záplata ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/ Utility http://sourceforge.net/projects/linuxquota/ Quota mini-HOWTO http://www.tldp.org/HOWTO/Quota.html
Postup při záplatování, konfiguraci a překladu jádra byl popsán například zde na Abc Linuxu v článku Kompilovanie jadra.
Základní konfigurace, spuštění
Každý souborový systém, na kterém chcete mít aplikované kvóty, musí být přimontovaný s volbou usrquota. I když je v manuálové stránce příkazu mount uvedeno, že se tato volba ignoruje, rozhodně není ignorována různými utilitami – musí být proto uvedena. Volbu uvedeme do souboru /etc/fstab.
LABEL=/ / ext3 defaults 1 1 LABEL=/uzivatele /uzivatele ext3 usrquota,grpquota 1 2 |
V horním řádku (systém souborů /) nejsou kvóty použité. Podobně vypadal před úpravou i druhý řádek. Na serveru poskytujícím diskový prostor by rozhodně měly být uživatelské diskové oblasti oddělené od systémových (root, var, usr a podobně).
Diskové kvóty nelze použít na všech typech souborových systémů – určitě se vám nepodaří aplikovat kvóty třeba na FAT nebo NFTS. Bez problémů je to ale u obvyklého systému ext2 a ext3.
V nejvyšším adresáři souborového systému vytvořte soubory pro práci kvót. I když podle manuálové stránky by měl příkaz quotacheck vytvořit soubory sám, nevěřte tomu:
touch aquota.user touch aquota.group chmod 600 aquota.* |
U distribuce Red Hat tímto veškerá instalace téměř končí. Všechno ostatní by měly obstarat startovací skripty (konkrétně /etc/rc.d/rc.sysinit). Nejjednodušším pokračováním je restart.
Nemůžete-li systém restartovat, proveďte instalaci ručně:
quotacheck -avug quotaon -avug |
Program quotacheck může protestovat, že systém souborů není přimontovaný pouze pro čtení a doporučí vám volbu -m.
U distribucí, které nemají kvóty shůry dáno, musíte zajistit startování výše uvedených dvou příkazů při startu systému.
Nastavení pro jednotlivé uživatele
Příkazem edquota můžeme měnit kvóty jednotlivých uživatelů. Příkaz vyžaduje nejméně jeden parametr – uživatelské jméno. Máte-li v systému více diskových oblastí s kvótami, bude nutné použít ještě parametr -F:
edquota -F /home marena |
V editoru se vám otevře tabulka, ve které můžete nastavit pro uživatele kvóty:
Disk quotas for user marena (uid 1030): Filesystem blocks soft hard inodes soft hard /dev/md0 24 1000 1500 3 0 0 |
Hodnoty upravíme, ukončíme editor – a od té chvíle by měl mít uživatel nastavené kvóty.
Grace period – doba, po kterou může mít uživatel překročený soft limit – se nastavuje pro celý disk společně, nelze ji nastavit pro každého uživatele zvlášť. Nastavuje se příkazem
edquota -t -F /home |
Čas lze nastavit od sekund po měsíce – pro označení použijte anglické názvy (seconds, minutes, hours, days, weeks, months). Mezi číslicí a názvem se nesmí objevit mezera.
Příkaz edquota volá normálně editor vi. Nevyhovuje-li vám tento editor, můžete ovlivnit chování příkazu edquota pomocí proměnné prostředí EDITOR:
export EDITOR=ed |
Místo editoru ed napište cestu na vlastní oblíbený editor. Ed jsem uvedl jen jako žert (dostanete se z něj písmenem q).
Nastavení editoru můžete využít při hromadném zavádění kvót pro větší množství uživatelů. Nastavte vzorové kvóty uživateli standa a pro celou vaši školku pak můžete nastavit kvóty podle tohoto vzoru jednoduchým skriptem:
set EDITOR=true for i in majdalenka apolenka veronika verka zdenka majka lenka monika do edquota -p standa $i done unset EDITOR |
Spolupráce s Windows
Kvóty se hlídají i při přístupu k disku z Windows protokolem smb. Při takovém použití kvót se můžete dostat do situace, že ačkoli je na disku nastavená kvóta 10 MB, podaří se vám uložit na disk třeba dva osmimegové soubory (dohromady tedy 16 MB). Příkaz ls -l říká 16, příkaz du -s říká 10, repquota říká 10. Soubory prostě mají menší velikost, než je udávaná.
Manuál (samba verze 2) pro tuto situaci doporučuje použití parametru samby strict allocate = yes. Nevýhodou je údajné zpomalení na některých systémech.
Při experimentech jsem si nevšiml, že by se Windows nějakým způsobem dozvěděly o překročení soft limitu. Aby se dal efektivně využít mechanismus „grace period“, je potřeba dát uživatelům dát vědět jiným způsobem. K tomu se dá využít program repquota. Tím zjistíme využití kvót jednotlivými uživateli a při překročení pošleme uživateli poštu:
repquota /home | awk ‚($2~“-“ || $2~“+“) && $4!=0 && $3>$4 {print $1, $3, $4, $5;}‘ | while read user block soft hard; do export user, block, soft, hard (echo „Mate na disku vice dat nez je povoleno:“ echo „Na disku: $block“ echo „Povoleno: $soft“ ) | mail -s „Prekrocene kvoty“ $user done |
Dávka by měla být pravidelně spouštěná z cronu. Uvedený příklad je samozřejmě velmi jednoduchý, uživatelé by jistě uvítali například seznam jimi vlastněných souborů. Zvláště ve sdílených adresářích mívají uživatelé strašný binec a často vůbec netuší, které soubory jsou jejich.
Závěr
Diskové kvóty jsou mocným nástrojem na umravnění nepořádných uživatelů. Notoričtí zálohovači internetu vás za to nebudou mít rádi, takže tvrdá pravidla můžete uplatňovat jen tak dlouho, dokud se jednou ve firmě bez vašeho vědomí neobjeví služební brokovnice…
DHCP server
V naší síti budeme využívat DHCP server pro přidělování IP adres našim dvěma stanicím, předávat informaci o serveru DNS a doméně. DHCP je navržen k poskytování všech možných parametrů TCP/IP svým klientům, přičemž umožňuje, aby byly IP adresy přiřazovány dynamicky. Pokud se letmo podíváte o pár řádků níž na výpis souboru /etc/dhcpd.conf
, tak zjistíte, že sice DHCP server provozujeme, ale IP adresy jsou přiřazovány stále celkem „staticky“ a to sice podle ethernetových adres síťových karet našich stanic. Proč jim tedy rovnou nepřiřazovat IP „ručně“? Toto řešení jsem zvolil proto, že je pohodlnější IP adresy (a veškeré další předávané informace) jednou napsat do souboru dhcpd.conf
a už se o ně nikdy nestarat. Jednou z mých stanic je notebook, který občas připojuji také do jiné sítě. Vždy, když jej připojím zpět, hned získá mnou definovanou IP adresu, doménu a adresu serveru DNS. Není to sice moc „dynamické“, ale funguje to bezchybně. Příkazem
route add -host 255.255.255.255 dev eth0 |
zajistíme správné routování pro klienty s Windows (zařízení eth0 příp. změníme na odpovídající) a můžeme se pustit do editace souboru /etc/dhcpd.conf
:
authoritative; ddns-update-style ad-hoc; # max-lease-time 604800; default-lease-time 86400; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.1.1; option domain-name "doma.cz"; # subnet 192.168.1.0 netmask 255.255.255.0 { } group { use-host-decl-names true; host stanice { hardware ethernet 00:00:1C:D1:4D:F9; fixed-address 192.168.1.3; } host vader { hardware ethernet 00:08:02:E6:40:02; fixed-address 192.168.1.2; } } # end |
Náš DHCP server poskytuje tyto informace:
option subnet-mask 255.255.255.0;
(definuje masku podsítě)option domain-name-servers 192.168.1.1;
(říká, že náš DNS server má adresu 192.168.1.1 – je to tedy opět náš server)option domain-name "doma.cz";
(předává informaci o doméně)subnet 192.168.1.0 netmask 255.255.255.0
(démon poskytuje konfigurační informace klientům patřícím k této síti)
V direktivě group
definujeme stálé adresy pro naše stanice podle ethernetových adres (stanice s názvy vader
a stanice
). Ethernetové adresy se dozvíte např. zadáním příkazu ifconfig zarizeni
.
Posledním zajímavým zápisem je use-host-decl-names true;
uvnitř příkazu group
, který říká, že kromě IP adres definovaných v příkazu host
, budeme posílat také název hostitele (v našem případě stanice
a vader
). V síťovém nastavení našich klientů se tedy nemusíme starat skutečně o nic.
Soubor /etc/dhcpd.conf
uložíme a DHCP server spustíme příkazem
dhcpd |
Pokud chceme DHCP server spouštět hned při startu serveru, přidáme příkaz dhcpd
do souboru /etc/rc.d/rc.local
(Slackware). Tabulku výpůjček IP adres můžeme kontrolovat v souboru dhcpd.leases (/var/state/dhcp/dhcpd.leases)
.
Nyní se na pár vteřin přesuneme ke klientovi a zkusíme, zda DHCP funguje. Otevřeme složku Síťová připojení / Připojení k místní síti / vlastnosti Protokolu TCP/IP a v obecném nastavení vybereme „Získat adresu IP ze serveru automaticky“ a „Získat adresu DNS serveru automaticky“. Po potvrzení otevřeme opět ve složce Síťová připojení položku „Připojení k místní síti – stav“ a pokud jsme vše nastavili správně, měl by nás čekat výsledek podobný tomu na obrázku.
Pokud ne, zkusíme Windows restartovat a pokud ani to nepomůže, udělali jsme někde chybu a nezbývá než zkontrolovat konfiguraci, nebo se ptát v diskusi pod článkem.
DNS server
Pomocí DNS serveru budeme překládat doménová jména na IP adresy. Místo 192.168.1.2
budeme moci vždy použít vader
a podobně. Začneme hlavním konfiguračním souborem serveru BIND a sice souborem /etc/named.conf
. Jiné distribuce než Slackware mohou tento soubor umísťovat jinam, tak jej najděte. Záznamy v něm již uložené neměňte a přidejte k nim tyto řádky:
zone "doma.cz" { type master; file "doma.named"; }; zone "1.168.192.in-addr.arpa" { type master; file "doma.rev"; }; |
Tento zápis přidává záznam pro domény doma.cz
a 1.168.192.in-addr.arpa
. Volba type master
říká, že tento server je pro naší doménu master serverem. Soubory doma.named
a doma.rev
(naše konfigurační soubory, které budeme za chvíli vytvářet) mají cestu relativní k adresáři určeném příkazem directory
v souboru
. V mém souboru
/etc/named.conf/etc/named.conf
je
directory /var/named |
a tak zmiňované soubory mají cestu /var/named/doma.named
resp. /var/named/doma.rev
. A protože nejsme připojeni k internetu, předchozí nastavení souboru named.conf
bude dostačující.
Soubor doma.named
Vytvoříme soubor /var/named/doma.named
s tímto obsahem:
$TTL 1w @ IN SOA server.doma.cz. root.doma.cz. ( 2004081700 ; Seriove cislo 10800 ; Refresh 1800 ; Retry 604800 ; Expire na DNS 2 900 ) ; Negative cache TTL ; Nameservery IN NS server.doma.cz. ; Mailservery IN MX 10 mail.doma.cz. ; Hosts server IN A 192.168.1.1 mail IN CNAME server pop3 IN CNAME server smtp IN CNAME server www IN CNAME server vader IN A 192.168.1.2 stanice IN A 192.168.1.3 |
Nastavení DNS serveru bylo podrobně rozebráno v článku Nastavení DNS, a tak se pouze zmíním o druhé části souboru. Pod vysvětlivkou Nameservery definujeme náš nameserver (server.doma.cz.
– záznam musí být zakončen tečkou) a pod vysvětlivkou mailservery
definujeme náš mailový server (za moment zjistíme, že mail.doma.cz
je pouze alias pro náš server). Číslo 10 udává prioritu (čím menší číslo, tím větší priorita). Zbytek souboru se už skládá z adresových záznamů, které přiřazují názvy hostitelů k IP adresám (tedy např. dvojice server = 192.168.1.1). Názvy mail, pop3, smtp a www určují aliasy pro hostitele server. Dále jsou tu samozřejmě záznamy pro naše dvě stanice (vader, stanice).
Soubor doma.rev
Reverzní soubor domén přiřazuje IP adresy k názvům hostitelů. Je to tedy opak databáze domén, která mapuje názvy hostitelů na adresy. Tento reverzní soubor bychom podle naší definice v named.conf
měli mít uložený ve /var/named/doma.rev
. Záznamy v tomto souboru by se měly logicky shodovat s těmi v souboru doma.named
, jinak se dočkáme nepříjemných překvapení.
$TTL 1w @ IN SOA server.doma.cz. root.doma.cz. ( 2004081701 10800 1800 1209600 604800 ) IN NS server.doma.cz. 1 IN PTR server.doma.cz. 2 IN PTR vader.doma.cz. 3 IN PTR stanice.doma.cz. |
Opět popíši pouze druhou část souboru. Na začátku každého řádku všech tří PTR záznamů jsou názvy (čísla) zapsané relativně k aktuální doméně. Aktuální doména je nyní 1.168.192.in-addr.arpa definovaná v konfiguračním souboru /etc/named.conf
. Přidáním PTR záznamu např. hostitele stanice.doma.cz získáme 3.1.168.192.in-addr.arpa. A protože jsou v reverzním souboru všechny adresy zapsány opačně (reverzně), skutečná adresa je 192.168.1.3 (doufám, že byl tento výklad aspoň trochu pochopitelný). Správnou syntaxi souborů můžeme otestovat příkazy
named-checkzone doma.cz /var/named/doma.named |
DNS a bezpečnost
Přestože není naše síť připojená k internetu, může se stát, že někdy bude, a tak není na škodu myslet trochu dopředu a omezit možný průnik na náš server přes démona named
tím, že jej budeme spouštět pod jiným uživatelem než je root.
Nejdříve přidáme skupinu named
:
groupadd -g 902 named |
Potom přidáme uživatele named
:
useradd -d /var/named -u 902 -g named -M -s /bin/false |
Změníme vlastníka adresáře named
:
chown named.named /var/named |
… a také všeho, co je v něm
cd /var/named && chown named.named * |
Nakonec změníme vlastníka procesu named
:
chown named.named /var/run/named |
Odteď budeme DNS server spouštět příkazem:
named -u named |
Aby se nám DNS spouštěl pod novým uživatelem pokaždé, přidáme parametr -u named
do příslušné části souboru /etc/rc.d/rc.bind
. Výsledek bude vypadat takto:
bind_start() { if [ -x /usr/sbin/named ]; then echo "Starting BIND: /usr/sbin/named -u named" # zde to není až tak důležité /usr/sbin/named -u named # zde ano fi } |
Pokud vše funguje tak, jak má, DNS server by měl nyní běžet a jeho adresa by měla být díky DHCP serveru známá i našim stanicím. Na zkoušku se můžeme zkusit dotázat jiného počítače příkazem ping
, či zkusit ping z windowsové stanice (Start / spustit / command):
hostitelping server
. Všechny počítače v sítí by samozřejmě měly dostat odezvu od jakéhokoliv jiného.
Ještě poslední poznámka. Pro Linux existuje program dnsmasq
, který v malé síti dělá přesně to, co naše servery DHCP a DNS. Je to další alternativa, jak dosáhnout stejného výsledku, takže je pouze na vás, jaký způsob zvolíte. Pro náš server se Slackwarem 10 najdeme dnsmasq
na prvním instalačním CD ve skupině n
.
To je pro dnešek vše, příště si nakonfigurujeme Samba server, aby fungoval jako primární doménový radič pro doménu NT.
Soukromá síť – III
Samba – úvod
Samba je balík nástrojů, který umožňuje na unixových či linuxových serverech využívat protokol SMB (Server Message Block) vyvinutý společností Microsoft pro sdílení souborů a tiskáren na systémech jako jsou Windows nebo OS/2. Můžeme ji tedy využít v naší síti s windowsovými klienty a linuxovým serverem. V naší síti budeme Sambu používat k následujícím činnostem:
- Nastavíme Samba server, aby fungoval jako primární doménový řadič v naší sítí. Vytvoříme doménu Windows NT s naším serverem, který bude pracovat jako řadič domény, tzn., že bude poskytovat přihlašování do domény a autentizaci přístupu ke sdíleným prostředkům. A protože používáme Sambu ve verzi 2.2 a novější, můžeme náš server použít jako primární doménový řadič jak pro klienty se systémy Windows 95/98/Me, tak pro klienty s Windows NT/2000/XP, ale i pro Windows Vista, 7, 10. V tomto smyslu předpokládám, že v síti zatím není žádný jiný počítač, který by sloužil jako doménový řadič.
- Sdílení domovských adresářů našich uživatelů. Po přihlášení do domény NT bude uživateli k dispozici jeho domovský adresář na serveru. Ten bude moci využít pro ukládání jakýchkoliv dat, avšak bude omezený diskovými kvótami vytvořenými v minulém díle seriálu, aby nedošlo k zaplnění diskové kapacity serveru neukázněnými uživateli.
- Sdílení dalších souborů a adresářů. Pomocí Samby můžeme na serveru či stanici sdílet další soubory či adresáře a poskytnout je ostatním klientům. To vše samozřejmě s využitím uživatelských práv.
- Nastavíme Sambu k používání cestovních profilů. Cestovní profily slouží k poskytnutí lepšího pohodlí našim uživatelům tím, že po přihlášení na jakýkoliv počítač v naší síti jim bude k dispozici poslední nastavení jejich pracovního prostředí (ikony na ploše, nabídka Start, dokumenty apod.).
Základní nastavení
Začneme opět na serveru. Hlavní konfigurační soubor Samby se jmenuje smb.conf
a na mém Slackwaru je uložen v adresáři /etc/samba/
. Může se stát, že po instalaci Samby se vytvoří soubor s názvem jako smb.conf.example
, který bude obsahovat jednoduchý příklad nastavení Samba serveru. Pokud je to tak, tento soubor klidně přejmenujte nebo odstraňte a vytvořte nový. Výsledkem nechť je prázdný soubor smb.conf
. Abychom mohli využít všech výše zmíněných vlastností, musíme soubor smb.conf
správně nastavit. Příkladem takového nastavení může být vzorový soubor smb.conf
, který si můžete stáhnout na konci toho článku. Zde jsou vysvětleny funkce důležitých řádků:
[global]
- Říkáme, že budeme nastavovat globální parametry našeho Samba serveru.
workgroup = DOMA.CZ
- Název pracovní skupiny. Přestože, se proměnná jmenuje workgroup (pracovní skupina), pracovat budeme s doménou.
netbios name = SERVER
- Jméno našeho počítače.
encrypt passwords = yes
- Chceme šifrovat hesla. Pokud se hlásíme do domény, musíme šifrování použít. U pracovní skupiny je tento údaj nepovinný.
domain master = yes
- Chceme náš server použít jako doménový hlavní prohlížeč, což znamená, že bude spravovat prohlížecí seznamy mezi podsítěmi.
local master = yes
- Chceme náš server použít jako místní hlavní prohlížeč, což znamená, že bude udržovat seznam aktivních počítačů (prohlížecí seznam).
os level = 65
- Čím vyšší číslo, tím vyšší šance, že náš server vyhraje volbu místního hlavního prohlížeče. Tuto funkci využijeme, pokud máme v síti další doménové radiče. Ty v tuto chvíli nemáme, ale pokud bychom je přidali, takto vysoké číslo nám zajistí, že náš server se Sambou volbu vyhraje.
security = user
- Určuje zabezpečení, které bude Samba používat při autentizaci. V tomto případě bude vyžadovat jméno a heslo.
domain logons = yes
- Samba se bude starat o přihlašování do domény.
logon path = \\%L\profiles\%u\%m
- Cesta pro ukládání cestovních profilů našich uživatelů ze systémů Windows NT/2000/XP. Cesta se skládá z proměnné %L (jméno serveru), sdílení „profiles“ (bude definováno později), proměnné %u (přihlášený uživatel) a proměnné %m (jméno klienta).
add machine script = /usr/sbin/useradd -c "Machine account" -d
/dev/null -g 103 -s /bin/false %u- Definuje skript pro automatické registrování stanic do domény (viz níže).
Dále definujeme sekci [profiles]
vytvářející sdílení, kam budeme ukládat cestovních profily uživatelů.
[profiles] path = /home/roaming ;Sem se budou soubory ukládat browsable = no ;Sdílením nebude možno procházet writable = yes ;Ale zapisovat do něj ano create mask = 0600 ;Masky souborů a adresářů. Plná práva directory mask = 0700 ;pro vlastníka, nula pro všechny ostatní |
Nyní můžeme lépe pochopit hodnotu příkazu logon path
, který jsme před chvíli nadefinovali. Cesta se skládala z proměnné %L (jméno serveru), sdílení „profiles“, proměnné %u (přihlášený uživatel) a proměnné %m (jméno klienta). Skutečná cesta tedy může vypadat například takto (na serveru):
/home/roaming/kamil/vader |
Upozorňuji, že toto nastavení bude fungovat pouze s Windows NT/2000/XP, nikoliv s Windows 95/98/Me.
V poslední sekci ve vzorovém souboru smb.conf
je definované sdílení domácích adresářů uživatelů. Sdílení se MUSÍ jmenovat [homes]
, jinak jej Samba bude brát jako obyčejné sdílení (a navíc by nefungovalo, protože nemáme nastavenu žádnou cestu). O sdílení domovských adresářů si více řekneme později. Správnou syntaxi souboru smb.conf
si ověříme příkazem testparm
. Ten by nám měl mimo jiné vypsat řádek
Server role: ROLE_DOMAIN_PDC |
který oznamuje roli našeho serveru v naší siti (PDC = Primary domain controler = Primární doménový řadič).
Abychom na to později nezapomněli, vytvoříme si na serveru adresář /home/roaming
s potřebnými právy:
mkdir /home/roaming |
Vše potřebné máme nyní připravené, a tak můžeme Samba server spustit.
/etc/rc.d/rc.samba start |
Příprava na připojení klientů
Abychom mohli naše klienty přihlásit do domény, musíme jim (podobně jako uživatelům) na serveru vytvořit účty, což se budeme snažit dělat automaticky. Doménový řadič pak povolí přístup pouze počítačům, které zná. Pro udržování dvojic uživatelské jméno – zašifrované heslo používá Samba soubor /etc/samba/private/smbpasswd
. Ten je podobný známému souboru podobného významu /etc/shadow
.
Poznámka: Ve vyšších verzích samby jsou údaje kryptované. Pro jejich ověření slouží příaz pdbedit -w -L
Pro přidání uživatele slouží příkaz:
smbpasswd -a jmeno_uzivatele |
A potom následuje dvojí zadání hesla. Když budete přidávat prvního uživatele, možná dostanete negativní odezvu, že databáze uživatelů neexistuje. Druhý pokus by už měl být úspěšný. Ještě než zaregistrujeme naše skutečné uživatele, vytvoříme na řadiči domény účet doménového administrátora, kterým je na Sambě uživatel root. Pomocí tohoto účtu budeme později registrovat naše stanice do domény.
smbpasswd -a root |
Jako heslo doporučuji vybrat jiné než to, které má váš root na serveru.
Nyní je čas říci si něco o registraci stanic. Aby byl ve věcech pořádek, vytvoříme skupinu hosts
(příkazem groupadd
), kam budeme přidávat účty všech našich stanic (u mě má GID 103). K přidávání stanic do databáze slouží příkaz
hostsadd machine
v globální sekci souboru
scriptsmb.conf
, který by měl zabezpečit, že se NetBIOS jméno naší stanice (následované znakem „$“) automaticky přidá jak do souboru/etc/passwd
(díky hodnotě useradd
), tak do souboru smbpasswd
.
Nicméně setkal jsem se s případy, kdy řadič odmítl stanici automaticky zaregistrovat, což se projevilo hláškou „Neplatné uživatelské jméno“ při pokusu registrovat stanici do domény. Pravděpodobně to mají na svědomí různé verze Samby, přičemž ta starší (2.2?) používá pro ten samý úkon příkaz add user script
. Každopádně pokud máte s přidáváním stanic problémy, vždy pomůže manuální přidání „uživatelského účtu“ stanice do databáze uživatelů a následné přidání stejného účtu do databáze smbpasswd
. Návod, jak to udělat, najdete v příštím díle.
Ještě předtím, než budeme moci vyzkoušet, zda automatické přidávání stanic funguje, musíme přidat do databáze smbpasswd
naše skutečné uživatele – uživatele našich stanic. Upozorňuji však, že se musí jednat o uživatele, kteří mají na našem serveru skutečně zřízený účet s platným UID. Ty jsme vytvářeli ve druhém díle našeho seriálu. Příkazem
smbpasswd -a kamil |
a dvojím zadáním hesla přidáme do databáze uživatele kamil. Příkaz opakujeme pro všechny uživatele, které chceme přidat. Příkazem findsmb
pak překontrolujeme, zda naše stanice reagují na SMB dotazy. Pokud ano, můžeme se pustit do jejich konfigurace. To bude náplní dalšího dílu.
Soukromá síť – IV
Konfigurace klientů
Nastavení přihlášení počítače do naší nové domény doma.cz
si ukážeme například na naší stanici vader
s Windows XP Professional.
Nastavení je jednoduché.
- K počítači se přihlásíme jako uživatel s administrátorskými právy a odpojíme všechny síťové disky.
- Poté pravým tlačítkem klikneme na ikonu
Tento počítač
a vybereme položkuVlastnosti
. - Dále vybereme záložku
Název počítače
a klikneme na tlačítkoZměnit
. - V poli
Je členem
vybereme možnostDomény
a do pole napíšeme DOMA.CZ (viz obrázek). - Po potvrzení na nás vyskočí dialog, kde budeme muset zadat jméno a heslo pro přihlášení do domény. Jméno bude
root
a heslo to, které jsme zadali pro roota příkazemsmbpasswd
.
Pokud náš řadič ví o naší stanici (díky automatické či manuální registraci stanic), mělo by vše proběhnout v pořádku a Windows nás přivítají v doméně doma.cz
.
Restartujeme počítač a počkáme si na přihlašovací okno. Tam máme možnost přihlásit se k samostatnému počítači (tak jsme se přihlašovali doposud) nebo k nové doméně. Vybereme tuto možnost a přihlásíme se pod nějakým uživatelským jménem a heslem, které jsme před chvílí zadávali příkazu smbpasswd
. Nedoporučuji přihlašovat se jako root – tento účet nám slouží pouze k registraci stanic.
Někde v oblastí Místa v síti by se měla nacházet ikona naší domény obsahující všechny počítače v ní (viz další obrázek). Ostatní prozkoumání Windows po přihlášení do domény nechám na vás (zajímavá jsou např. práva k souborům a adresářům). Pouze ještě upozorním na přítomnost síťového disku v oblasti Tento počítač
. Je to domácí adresář na serveru právě přihlášeného uživatele a jak bylo řečeno, jeho velikost by měla být omezena souborovými kvótami, takže nehrozí nechtěné zaplnění disku.
Další sdílení
Ukážeme si jednoduchý příklad sdílení nějakého adresáře na serveru pomocí Samby. Konfigurace sdílení se nastavuje opět v souboru smb.conf
v sekci, která nese název našeho sdílení (tento název se objeví ve sdílených prostředcích serveru na našich stanicích). Zde je příklad z ukázkového souboru smb.conf
:
[dokumenty] comment = Public documents path = /tmp/docs read only = yes guest ok = no valid users = kamil tomas |
Z příkladu lze zjistit řadu věcí. Komentář a cesta ke sdílenému adresáři jsou zřejmé.
- Příkaz
read only = yes
říká, že do sdíleného adresáře uživatelé nebudou moci zapisovat ani jej měnit (to platí i tehdy, má-li uživatel plná práva k tomuto adresáři). - Příkaz
guest ok = no
nám zase říká, že ke sdílení nemohou přistupovat neautorizovaní uživatelé. - Za příkazem
valid users
je seznam uživatelů, kterým bude povoleno se k prostředku přihlásit. Pokud tento příkaz nedefinujeme, přístup bude povolen všem uživatelům. - Zrovna tak můžeme definovat položku
invalid users
, jejíž význam je zřejmý. - Nebo položku
admin users
, což je seznam uživatelů, kteří budou moci se sdílením nakládat podle libosti).
Sdílený prostředek lze nastavit opravdu detailně, což dokazuje na 80 různých příkazů, které lze nastavit jednotlivým sdíleným prostředkům (Jejich seznam a popis naleznete v nápovědě nástroje SWAT).
Cestovní profily
Význam cestovních profilů (neboli Roaming profiles) byl již napsán na začátku článku, a tak si rovnou vysvětlíme, jak je nastavit a používat. Pouze upozorním, že s přítomností stanic se staršími verzemi Windows (95/98/Me) se situace poněkud komplikuje, takže tento problém budu muset nechat na vaše vlastní studium, protože by vydal minimálně na samostatný článek.
Na stanicích by měly být cestovní profily od začátku zapnuté (Vlastnosti systému / Upřesnit / Profily uživatelů -
), a tak se odhlásíme a přesuneme zpět k serveru. Z nastavení našeho souboru
Nastavenísmb.conf
vyplývá, že se soubory cestovních profilů budou ukládat do adresáře /home/roaming/[uživatel]/[stanice]
.
Protože chceme profily uživatelů sdílet, musíme udělat pár změn. Po našem předchozím přihlášení uživatele kamil na stanici vader
se vytvořil adresář s jeho profilem v /home/roaming/kamil/vader
. Na stanici vader
běží Windows XP Professional, a tak budeme chtít, aby pokaždé, když se kamil přihlásí z jakéhokoliv počítače v sítí, kde je nainstalován tento systém, mu byl k dispozici jeho cestovní profil s vlastním nastavením.
Předpokládejme, že máme v sítí stanici s názvem darth
, kde je také systém Windows XP Professional. Když se k ní kamil přihlásí, opět se vytvoří adresář s profilem /home/roaming/kamil/darth
. Aby se však kamilovi nahrál jeho profil, pro všechny stanice se stejnými operačními systémy vytvoříme symbolické linky ukazují do odpovídajících adresářů. Zde je příklad.
ls -l /home/roaming/kamil total 4 drwx------ 14 kamil kamil 4096 2004-09-11 10:35 WinXP/ lrwxrwxrwx 1 root root 5 2004-09-09 22:43 darth -> WinXP/ lrwxrwxrwx 1 root root 5 2004-09-10 14:23 vader -> WinXP/ |
Prve vytvořený adresář /home/roaming/kamil/vader
jsme přejmenovali na WinXP
a vytvořili symbolické linky se jmény všech počítačů v síti se systémem Windows XP ukazující do adresáře WinXP
. Když se kamil přihlásí z počítače darth
nebo vader
, bude přesměrován do adresáře WinXP
a jeho profil mu bude k dispozici. Tak umožníme našim uživatelům sdílet své profily na počítačích se stejným systémem. Postup opakujeme s dalšími počítači a systémy (Win2k).
Vidíme, že používání cestovních profilů je poněkud komplikované a co je horší, také nebezpečné. Nastavení profilu se vždy ukládá při odhlášení uživatele ze stanice. Problém může nastat, pokud by byl uživatel přihlášen ke dvěma stanicím najednou. Na první stanici udělá nějaké změny (uloží dokumenty) a poté se odhlásí. Na druhé stanici tyto změny neudělá a po odhlášení bude na server uložen jeho profil z této stanice. Změny provedené na stanici první tak budou ztraceny.
Je tedy pouze na vás, zda s cestovními profily budete pracovat nebo ne.
Manuální registrace stanic do domény
Pokud se vám z nějakého důvodu nepodařilo vaší stanici automaticky registrovat v databázi uživatelů, můžete to udělat manuálně. Prvním krokem je příkaz useradd
, a protože nepřidáváne skutečné uživatele, nýbrž důvěryhodné účty počítačů, dáváme za jejich jména znak ‚$‘):
useradd -d /dev/null -g 103 -s /bin/false vader$ |
(Za předpokladu, že naše nová skupina počítačů hosts
má GID 103.)
Nyní můžete zkusit přidat stanici do domény tak, jak je to popsábo v odstavci Konfigurace klientů výše. Pokud to ani tentokrát nevyjde, musíte ještě přidat stanice do databáze smbpasswd
. To lze udělat příkazy:
smbpasswd -a -m vader |
Tentokrát jména nemusíme zakončovat znakem ‚$‘ protože to za nás udělá parametr -m
, který příkazu říká, že přidávaný účet je důvěryhodným účtem počítače, a potřebný znak za jméno přidá. Nyní už musí registrace stanice do domény proběhnout bez potíží.
Závěr
Zde uvedený příklad souboru smb.conf
samozřejmě zdaleka nepokryl všechny možnosti Samba serveru. Například jsme si vůbec neukázali, jak sdílet tiskárny, což je jednou z velikých předností Samby. Tímto článkem jsem pouze pokryl jednu kapitolu z rozsáhlé konfigurace Samby a všechny další postupy už nechám na vás. K ulehčení práce doporučují knihu Using Samba 2nd Edition (podle níž jsem nastavoval Sambu i já) a konfigurační nástroj SWAT.
V dalším (a pravděpodobně posledním) díle seriálu si nastavíme poštovní server Postfix a pár dalších služeb. Přeji příjemný tanec se Sambou!
Soukromá síť – V
O krůček zpět
Přestože jsem v minulém díle avizoval, že nebudu popisovat, jak pro naše klienty sdílet tiskárnu přes Sambu, nakonec se k tomu v krátkosti vrátím. Povídání o Sambě tak bude o něco kompletnější. Cílem tohoto dodatku tedy bude tiskárna připojená k serveru (v mém případě přes USB kabel), ze které půjde tisknout i z našich stanic se systémem Windows. Zde je velmi důležité, aby tiskárna na serveru bezchybně fungovala. Pokud to tak není, z problémů se nedostanete.
V každé distribuci existuje nějaký nástroj pro nastavení tiskárny, na Slackwaru se toto dá pohodlně udělat programem apsfilter (/usr/share/apsfilter/SETUP
). Výsledkem nastavení tiskárny by měl být platný konfigurační soubor /etc/printcap
. Zapamatujte si, jaké jméno jste tiskárně přidělili.
Pro sdílení tiskárny přes Sambu existují dvě možnosti. Za prvé můžeme v globální sekci souboru smb.conf
definovat sekci [printers]
. Pokud tak učiníme, Samba automaticky načte obsah souboru, který definuje nastavení tiskáren (obvykle /etc/printcap
, pokud nedefinujeme jiný), a pro každou tiskárnu v něm nalezenou vytvoří samostatné (tiskové) sdílení. Druhá možnost je o něco jednodušší. Globální sekci souboru smb.conf
necháme nezměněnou a pouze přidáme tiskové sdílení definující nastavení naší tiskárny. V našem příkladě použiji tuto druhou možnost, protože pro moji jednu tiskárnu je dostačující.
Tiskové sdílení definované v souboru smb.conf
může vypadat třeba takto:
[deskjet656] printable = yes comment = HP DeskJet 656c print command = /usr/bin/lpr -P%p -r %s printer admin = kamil printer = lp printing = BSD path = /tmp |
- Příkaz
printable = yes
nám říká, že se jedná o tiskové sdílení (jinak by se jednalo o normální diskové sdílení). print command
určuje tiskový příkaz, pomocí kterého bude soubor vytištěn; poté bude jeho kopie ze Samba serveru smazána.- Příkaz obsahuje parametr
P
s proměnnou%p
(ta interpretuje jméno tiskárny, a tak tímto příkazem říkáme, na jaké tiskárně chceme tisknout). r
– ten říká, že po tisku se kopie souboru smaže.- A konečně proměnnou
%s
, která bude nahrazena jménem tištěného souboru.
- Příkaz obsahuje parametr
- Příkaz
printer admin
definuje administrátory tiskárny (viz níže) - a příkaz
printer
její název. - Příkazem
printing = BSD
říkáme, že používáme Linux s BSD systémem tisku. Toto nastavení má mimo jiné vliv na příkazprint command
, který by se při jiné hodnotě příkazuprinting
měl také změnit. - Cesta
path
určuje, kam se budou před tiskem ukládat dočasné soubory.
Pokud systém na klientovi neobsahuje ovladač k naší tiskárně (jako v mém případě), tak jej sežeňte, budete ho potřebovat při její instalaci. Doporučuji na Sambě vytvořit samostatné sdílení (např. print_drv), které bude obsahovat tento ovladač, abyste jej nemuseli stále někde hledat, či přenášet CD při instalaci tiskárny na více stanic.
Na stanici se přihlásíme jako uživatel s administrátorskými právy a průvodcem pro přidání tiskárny přidáme novou (síťovou) tiskárnu, v našem případě se jmenuje deskjet656 (\\server\deskjet656
). Když jsem instaloval tiskárnu jako Administrator (tzn. někdo jiný než je uvedený v příkazu printer admin
v souboru smb.conf
), tak tisknout sice šlo, ale Windows hlásily ve vlastnostech tiskárny, že se „Připojení nepodařilo“ a že byl „Přistup odmítnut“. Takže doporučuji instalovat tiskárnu jako printer admin.
—
Přestože jsem avizoval, že nebudu popisovat, jak pro naše klienty sdílet tiskárnu přes Sambu, nakonec se k tomu v krátkosti vrátím. Povídání o Sambě tak bude o něco kompletnější. Cílem tohoto dodatku tedy bude tiskárna připojená k serveru (v mém případě přes USB kabel), ze které půjde tisknout i z našich stanic se systémem Windows. Zde je velmi důležité, aby tiskárna na serveru bezchybně fungovala. Pokud to tak není, z problémů se nedostanete.
V každé distribuci existuje nějaký nástroj pro nastavení tiskárny, na Slackwaru se toto dá pohodlně udělat programem apsfilter (/usr/share/apsfilter/SETUP). Výsledkem nastavení tiskárny by měl být platný konfigurační soubor /etc/printcap. Zapamatujte si, jaké jméno jste tiskárně přidělili.
Pro sdílení tiskárny přes Sambu existují dvě možnosti. Za prvé můžeme v globální sekci souboru smb.conf definovat sekci [printers]. Pokud tak učiníme, Samba automaticky načte obsah souboru, který definuje nastavení tiskáren (obvykle /etc/printcap, pokud nedefinujeme jiný), a pro každou tiskárnu v něm nalezenou vytvoří samostatné (tiskové) sdílení. Druhá možnost je o něco jednodušší. Globální sekci souboru smb.conf necháme nezměněnou a pouze přidáme tiskové sdílení definující nastavení naší tiskárny. V našem příkladě použiji tuto druhou možnost, protože pro moji jednu tiskárnu je dostačující.
Tiskové sdílení definované v souboru smb.conf může vypadat třeba takto:
[deskjet656] printable = yes comment = HP DeskJet 656c print command = /usr/bin/lpr -P%p -r %s printer admin = kamil printer = lp printing = BSD path = /tmp |
- Příkaz printable = yes nám říká, že se jedná o tiskové sdílení (jinak by se jednalo o normální diskové sdílení).
- print command určuje tiskový příkaz, pomocí kterého bude soubor vytištěn; poté bude jeho kopie ze Samba serveru smazána.
- Příkaz obsahuje parametr P s proměnnou %p (ta interpretuje jméno tiskárny, a tak tímto příkazem říkáme, na jaké tiskárně chceme tisknout).
- r – ten říká, že po tisku se kopie souboru smaže.
- A konečně proměnnou %s, která bude nahrazena jménem tištěného souboru.
- Příkaz printer admin definuje administrátory tiskárny (viz níže)
- a příkaz printer její název.
- Příkazem printing = BSD říkáme, že používáme Linux s BSD systémem tisku. Toto nastavení má mimo jiné vliv na příkaz print command, který by se při jiné hodnotě příkazu printing měl také změnit.
- Cesta path určuje, kam se budou před tiskem ukládat dočasné soubory.
Pokud systém na klientovi neobsahuje ovladač k naší tiskárně (jako v mém případě), tak jej sežeňte, budete ho potřebovat při její instalaci. Doporučuji na Sambě vytvořit samostatné sdílení (např. print_drv), které bude obsahovat tento ovladač, abyste jej nemuseli stále někde hledat, či přenášet CD při instalaci tiskárny na více stanic.
Na stanici se přihlásíme jako uživatel s administrátorskými právy a průvodcem pro přidání tiskárny přidáme novou (síťovou) tiskárnu, v našem případě se jmenuje deskjet656 (\\server\deskjet656). Když jsem instaloval tiskárnu jako Administrator (tzn. někdo jiný než je uvedený v příkazu printer admin v souboru smb.conf), tak tisknout sice šlo, ale Windows hlásily ve vlastnostech tiskárny, že se „Připojení nepodařilo“ a že byl „Přistup odmítnut“. Takže doporučuji instalovat tiskárnu jako printer admin.
Konečně Postfix
Nyní budeme nastavovat Postfix, neboli SMTP server – službu na posílání elektronické pošty. Přestože není naše síť v tomto stavu připojená k internetu, umožníme tak našim uživatelům si mezi sebou posílat e-maily. Předem upozorňuji, že Postfix může mít mnoho konfiguračních voleb, nastavení a parametrů, které by vydaly minimálně na několik článků. My si však Postfix nastavíme pouze pro potřeby naší soukromé sítě. Detailní nastavení Postfixu není hlavní náplní tohoto článku, tak na to prosím v diskusi berte ohled. Pro pokročilé nastavení tohoto poštovního systému, doporučuji článek http://deja-vix.sk/sysadmin/postfix.html#top.
Pokud jsme instalovali Postfix z binárního balíčku, měl by se nám do systému automaticky přidat nový uživatel, pod kterým se program bude pouštět:
$ grep postfix /etc/passwd |
Pokud jsme nekompilovali Postfix ze zdrojových kódů a při tom nezměnili nějaké výchozí nastavení, měli bychom najít hlavní konfigurační soubor Postfixu, soubor /etc/postfix/main.cf
. Ten se zdá být velmi dlouhý, avšak jeho největší část tvoří komentáře k jednotlivým příkazům. Většinu hodnot můžeme nechat zakomentovanou, či ponechat výchozí nastavení. Následující hodnoty by však měly být nastaveny určitě:
myhostname = server.doma.cz
- Určuje úplné jméno našeho serveru.
mydomain = doma.cz
- Doménové jméno serveru.
myorigin = $myhostname
- Určuje doménu (server), ze které bude přicházet lokální pošta, pokud nebyla specifikována adresa odesílatele.
inet_interfaces = all
- Seznam síťových zařízení, ze kterých půjde posílat pošta. Obvykle všechna.
mynetworks = 192.168.1.0/24, 127.0.0.0/8
- Specifikace naší sítě.
mydestination = $myhostname, localhost.$mydomain, localhost,
$mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain- Lokální doménové adresy, pro které Postfix přijímá poštu.
relay_domains = $mydestination
- Postfix bude přijímat poštu i z těchto doménových adres a to kvůli dalšímu zpracování (např. přeposílání).
Výchozí nastavení proměnné alias_maps
v souboru main.cf
by mělo ukazovat na soubor /etc/aliases
. Tento soubor by měl v našem systému existovat. Pokud to tak není, zkopírujeme na jeho místo soubor s aliasy nainstalovaný s Postfixem:
cp /etc/postfix/aliases /etc/aliases |
Potom můžeme tento soubor editovat a přidat si naše různé aliasy (přezdívky) pro uživatele. Databázi aliasů aktualizujeme příkazem
newaliases |
Soubor main.cf
samozřejmě může obsahovat mnohem více nastavení, avšak toto by mělo pro naší síť stačit. Ještě si v main.cf
všimněte proměnné relayhost
, která určuje adresu serveru, kam bude Postfix přeposílat poštu, kterou nebude moci doručit sám. Typicky to bývá adresa mailového serveru poskytovatele připojení, což se hodí, pokud máme vlastní síť připojenou k internetu a chceme využívat svůj poštovní server.
Postfix spustíme příkazem
/etc/rc.d/rc.postfix start |
Pokud chceme Postfix automaticky spouštět po startu serveru (což asi chtít budeme), přidáme do souboru /etc/rc.d/rc.local
tyto řádky:
if [ -x /etc/rc.d/rc.postfix ]; then |
Vyzvedávání pošty
Naši uživatelé si budou poštu ze serveru vyzvedávat pomocí protokolu POP3. Ten se spouští téměř výhradně pomocí super-serveru inetd
(na jiných distribucích to může být novější xinetd
). V souboru /etc/inetd.conf
již pravděpodobně bude rádek definující službu POP3 připravený, avšak zakomentovaný. Takže jej odkomentujte.
$ grep pop3 /etc/inetd.conf pop3 stream top nowait root /usr/sbin/tcpd /usr/sbin/popa3d |
Z tohoto výpisu vidíme, že přístup k POP3 je omezen pomocí TCP wrapperu (spouští se TCP wrapper – tcpd, místo samotného obslužného démona POP3) a tak ještě můžeme editovat soubory /etc/hosts.allow
a /etc/hosts.deny
. Z bezpečnostních důvodů doporučuji v souboru /etc/hosts.deny
všechny služby všem zakázat a v souboru /etc/hosts.allow
povolit služby konkrétním klientům (v tomto případě klientům z naší sítě):
$ cat /etc/hosts.deny |
$ cat /etc/hosts.allow |
Nastavení poštovních klientů (Outlook Express, Mozilla Mail, Evolution, apod.) už nechám na vás, protože to zajisté každý umí. Pokud jste nastavovali DNS server jako já (podle popisu ve druhém díle), mělo by být možné použít tyto hodnoty pro nastaveni klienta:
- Server pro příchozí poštu (POP3):
pop3.doma.cz
- Server pro odchozí poštu (SMTP):
smtp.doma.cz
- E-mailová adresa: uzivatel@doma.cz (normální uživatel na našem serveru)
Přihlašovací jméno a heslo mají stejné hodnoty jako účty našich uživatelů na serveru.
Závěr
Tímto můj příspěvek do soukromé sítě končí. V tomto seriálu jsme si přednastavili několik služeb (minimálně DHCP, DNS a Postfix), jejichž konfigurace se dá snadno rozšířit, a tak použít ve větší síti. Síť je v tomto stavu připravená k připojení k internetu (IP maškaráda), přičemž návodů, jak to udělat je k dispozici spousta. Doufám, že jsem někomu s tímto návodem pomohl k vybudováni své sítě, či alespoň s nastavením dílčích služeb. Díky za pozornost.
—————-
Zdroj: 7. 9. 2004 | Kamil Kantar
https://www.abclinuxu.cz/serialy/soukroma-sit
Doplnění:
Zdravim vsechny a diky za pomoc. Podarilo se mi situaci vyresit a to nasledovne:
1) Naloguji se jako uzivatel domeny
2) Naleznu si pozadovanou slozku pro presmerovani (napriklad: C:\users\uzivatel\obrazky)
3) Vyberu Vlastnosti – zalozku Umisteni – prepisu cestu kam nasmerovat (napr: \\samba\profiles\.uzivatel\obrazky)
4) Zopakuji pro vsechny uzivatele domeny
Je mi jasne ze prvni nastaveni je pomerne zdlouhave ale jine reseni jsem nenasel.
Jen jeste prosim o doporuceni jake adresare presmerovat a jake ne ?
Re: Přesměrování adresářů v cestovním samba profilu
Re: Přesměrování adresářů v cestovním samba profilu
Diky uz mi to take doslo, tedy presmeroval jsem:
1) videos, pictures, music
2) desktop
3) downloads
4) dokuments
5) appdata\roming – zbytek se mi nedari ale i tak dobre
Nicmene jsem narazil na problem a to nasledujici:
V pripade ze jsem se jako uzivatel domeny prihlasil pred nastavenim presmerovani adresaru tak se prihlasim v pohode, v pripade ze se na dane pc prihlasuji poprve prihlasi me system jako docasny profil.
Napada me jedine reseni a to nejdrive si uskladnit vsechny profily uzivatelu, ty pak prekopirovat na kazde pc ve skole a nasledne vsechny uzivatele prenastavit s presmerovanim.
DO zacatku sice neuveritelne mnozstvi prace ale jine reseni me nenapada, mel by nekdo jiny napada ? Rad si necham poradit.
DIky
Re: Přesměrování adresářů v cestovním samba profilu
Zdravim a odpovim si sam. Problem nastal pouze u jednoho uzivatele jehoz profil byl poskozeny. Ostatni jedou bez problemu. TEdy reseni je viz vyse. Vsem diky za radu.
S cestovním profily pracuji již 14 let. Nenávidím je i je mám rád. Používat je musím, naši grafici, fotografové mají rádi svou plochu a nastavení svých aplikací na libovolném počítači ve škole. Přesměrované mám vše kromě roaming dat a plochy, to nelze, byl jsem tam, viděl jsem to a už to nechci. Čekat než se otevře menu v aplikaci až 10 sekund, to se musí vidět, poškozená data aplikací na denním pořádku… Na druhou stranu, když přiletí ředitelka, že jí úplně umřel počítač a že skončil svět, a já jen vyměním disk, clonezillou za 10 minut nainstaluji windows, ona se přihlásí a vše je na svém místě, to je radosti. Jediný problém jsou právě nezodpovědní vývojáři software, kteří používají roamming data jako odpadiště nebo cache! A proč chrome ve výchozím nastavení ukládá profil do local data?! Je to prostě štelování, ale pak mi externisté říkají, že v jiných školách to tak fajn udělané nemají. Jen mandatorni profily, data si nosí na svých flashkách apod.
Význam cestovních profilů (neboli Roaming profiles) byl již napsán na začátku článku, a tak si rovnou vysvětlíme, jak je nastavit a používat. Pouze upozorním, že s přítomností stanic se staršími verzemi Windows (95/98/Me) se situace poněkud komplikuje, takže tento problém budu muset nechat na vaše vlastní studium, protože by vydal minimálně na samostatný článek.
Na stanicích by měly být cestovní profily od začátku zapnuté (Vlastnosti systému / Upřesnit / Profily uživatelů – Nastavení), a tak se odhlásíme a přesuneme zpět k serveru. Z nastavení našeho souboru smb.conf vyplývá, že se soubory cestovních profilů budou ukládat do adresáře /home/roaming/[uživatel]/[stanice].
Protože chceme profily uživatelů sdílet, musíme udělat pár změn. Po našem předchozím přihlášení uživatele kamil na stanici vader se vytvořil adresář s jeho profilem v /home/roaming/kamil/vader. Na stanici vader běží Windows XP Professional, a tak budeme chtít, aby pokaždé, když se kamil přihlásí z jakéhokoliv počítače v sítí, kde je nainstalován tento systém, mu byl k dispozici jeho cestovní profil s vlastním nastavením.
Předpokládejme, že máme v sítí stanici s názvem darth, kde je také systém Windows XP Professional. Když se k ní kamil přihlásí, opět se vytvoří adresář s profilem /home/roaming/kamil/darth. Aby se však kamilovi nahrál jeho profil, pro všechny stanice se stejnými operačními systémy vytvoříme symbolické linky ukazují do odpovídajících adresářů. Zde je příklad.
ls -l /home/roaming/kamil total 4 drwx------ 14 kamil kamil 4096 2004-09-11 10:35 WinXP/ lrwxrwxrwx 1 root root 5 2004-09-09 22:43 darth -> WinXP/ lrwxrwxrwx 1 root root 5 2004-09-10 14:23 vader -> WinXP/ |
Prve vytvořený adresář /home/roaming/kamil/vader jsme přejmenovali na WinXP a vytvořili symbolické linky se jmény všech počítačů v síti se systémem Windows XP ukazující do adresáře WinXP. Když se kamil přihlásí z počítače darth nebo vader, bude přesměrován do adresáře WinXP a jeho profil mu bude k dispozici. Tak umožníme našim uživatelům sdílet své profily na počítačích se stejným systémem. Postup opakujeme s dalšími počítači a systémy (Win2k).
Vidíme, že používání cestovních profilů je poněkud komplikované a co je horší, také nebezpečné. Nastavení profilu se vždy ukládá při odhlášení uživatele ze stanice. Problém může nastat, pokud by byl uživatel přihlášen ke dvěma stanicím najednou. Na první stanici udělá nějaké změny (uloží dokumenty) a poté se odhlásí. Na druhé stanici tyto změny neudělá a po odhlášení bude na server uložen jeho profil z této stanice. Změny provedené na stanici první tak budou ztraceny.
Je tedy pouze na vás, zda s cestovními profily budete pracovat nebo ne.