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

Vytvoření skupin a uživatelů, nastavení souborových kvót, konfigurace DHCP a DNS serverů.

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

IPv4 kalkulačka

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 \
-m -k /etc/skel -s /bin/bash -u 1001 kamil

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
useradd -c "Prototyp - normal user" -g 900 -u 901 \
-s /bin/false normal_user

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 vimu 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.

win obr

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
/etc/named.conf
. V mém souboru /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
named-checkzone 1.168.192.in-addr.arpa /var/named/doma.rev

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
named

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
hostitel
, či zkusit ping z windowsové stanice (Start / spustit / command): ping 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

Ve třetím díle seriálu se budeme zabývat jedinou, zato však obsáhlejší konfigurací – nastavením serveru Samba jako primárního doménového řadiče domény NT.

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
chmod 777 /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
hosts
), 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 add machine
script
v globální sekci souboru smb.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

Dokončení konfigurace Samba serveru. Nastavení klientů a sdílení, cestovní profily.

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.

Přihlášení do domény

Nastavení je jednoduché.

  1. 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.
  2. Poté pravým tlačítkem klikneme na ikonu Tento počítač a vybereme položku Vlastnosti.
  3. Dále vybereme záložku Název počítače a klikneme na tlačítko Změnit.
  4. V poli Je členem vybereme možnost Domény a do pole napíšeme DOMA.CZ (viz obrázek).
  5. 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říkazem smbpasswd.

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ů -
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.

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$
useradd -d /dev/null -g 103 -s /bin/false stanice$

(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
smbpasswd -a -m stanice

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

Dokončení konfigurace Samby: sdílení tiskárny. Instalace a nastavení Postfixu pro použití v lokální síti.

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 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.

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
postfix:x:104:104:The postfix MTA:/var/spool/postfix:/bin/false

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
/etc/rc.d/rc.postfix start
fi

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
ALL:ALL

 

$ cat /etc/hosts.allow
ALL: LOCAL 192.168.1.

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í:

13.7.2005 13:13 LuděkS | skóre: 30 | blog: publish | Liberec
Re: Samba a cestovni profily

Zdravím, zde je záznam z diskuze k článku soukromá síť IV. Třeba to pomůže: 29.9.2004 11:03 Jiri Dobry Doplnuji obsah souboru predavaneho regedit v logon scriptu: Nektere slozky profulu budou sitove [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders] „Cookies“=“I:\\Cookies“ „Favorites“=“I:\\Oblíbené položky“ „Personal“=“H:\\“ „My Pictures“=“H:\\Obrázky“ „My Music“=“H:\\Hudba“ Sitova cast profilu se nekopiruje [HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System] „ExcludeProfileDirs“=“Dokumenty;Cookies;Oblíbené položky „

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 ?

Pavel 'TIGER' Růžička avatar 12.9.2014 16:07 Pavel ‚TIGER‘ Růžička | skóre: 50
Re: Přesměrování adresářů v cestovním samba profilu

Seřaď si je podle velikosti a máš +/- odpověď. Jen pozor na specifické aplikace (rozuměj prasácky naprogramované), které se ve školství nacházejí, některé přesměrování neunesou.
12.9.2014 16:40 Zdenek.k | skóre: 6
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

12.9.2014 17:29 Zdenek.k | skóre: 6
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.