NetWare zdarma Milan Keršláger, 11. května 1998 There once was a master programmer who wrote unstructured programs. A novice programmer, seeking to imitate him, also began to write unstructured programs. When the novice asked the master to evaluate his progress, the master criticized him for writing unstructured programs, saying: "What is appropriate for the master is not appropriate for the novice. You must understand the Tao before transcending structure." -- Geoffrey James, "The Tao of Programming" Novell NetWare Novell NetWare (NW) je stabilní hvězdou na nebi lokálních sítí, kde umožňuje stanicím sdílet různá zařízení prostřednictvím počítačové sítě. Pracuje na základě architektury klient-server. Klienty zde jsou stanice, které sdílejí disky serveru, společné tiskárny, CD-ROM a podobně. Servery tak mají v síti výsadní postavení a jsou u nich kladeny vysoké nároky na výkon a spolehlivost. To vedlo firmu Novell k vývoji vysoce specializovaného operačního systému, který sice prakticky umí téměř jen sdílet své disky, ale zato to umí perfektně. Staví se tak do zcela vyhraněné pozice, kdy na rozdíl od Unixů nekoncentruje veškeré programy a prostředí pro jejich spouštění do jediného místa, ale přenechává maximální možnou míru povinností na stanicích. Ty musí mít vlastní operační systém a NetWare se stará pouze o to, aby se stanicím zdálo, že všechna sdílená zařízení se nacházejí přímo u stanice samotné. Spuštěné programy pak běží přímo na jednotlivých stanicích a iluze se sdílenými zařízeními je pro ně tak dokonalá, že s nimi dokáží pracovat téměř všechny programy, i když pro provoz v síti původně vůbec nebyly napsány. Před tím, než může uživatel z nějaké stanice využívat sdílených zařízení poskytovaných serverem, musí se k němu přihlásit, čili prokázat mu svou identitu pomocí jména a hesla. Pokud se uživatel úspěšně přihlásí, jsou mu na oplátku až do odhlášení poskytovány veškeré zdroje, které smí daný uživatel užívat. Práva k užívání jsou evidována na serveru a uživatelům je přiděluje správce (administrátor) systému. Linux, se kterým pracujeme, má o mnoho větší možnosti, než server s Novell NetWare. Proto se nelze divit, že je v jeho silách dokonce emulovat činnost samotného NetWare serveru. Linux se pak navenek mimo jiné tváří, jako by byl NetWare serverem. Nedosahuje sice takových kvalit jako jeho specializovaný kolega, ale přesto ho může nahradit více než se ctí. Připočteme-li k tomu prakticky nulovou cenu a mnohostrannost samotného Linuxu, který můžeme současně používat na spoustu dalších věcí, začne být tento rys velice zajímavý. Co je Mars a Linware? Pokud se Linux chce stát zdánlivým NetWare serverem, musí umět komunikovat pomocí protokolu IPX, je třeba implementovat NCP protokol a musí se do sítě začít ohlašovat pomocí SAP protokolu. Čím lépe bude takto napodobovat svůj vzor, tím lépe pro nás. Tuto službu jsou schopny zastat dva programy: Mars a Linware. Linware - český produkt Autorem Linware (ftp://platan.vc.cvut.cz/pub/linux/lwared-0.95/) je Aleš Dryák z ČVUT v Praze. S vývojem skončil v roce 1995. V roce 1996 tento projekt ožil, když se Aleš sešel s Petrem Vandrovcem a Jirkou Novákem. J. F. Chadima pak provedl zásadní zásah do kódu, který vedl do slepé uličky a fakticky k zastavení projektu. Petr a Jirka pak ještě sice Linware trošku upravili, ale dnes na jeho dalším vývoji prakticky nikdo nepracuje. Linware je dnes ve funkčním stavu, ale pro jeho další pokračování je ho nutné prakticky celý přepsat. Zde se nabízí možnost pro kohokoliv, kdo by měl vůli tento zajímavý projekt a konkurenci Marsu vést dál. Mars Mars (http://www.compu-art.de/download/mars_nwe.html) (Martin Stovers NetWare Emulator) je původem z Německa a je neustále zdokonalován. Dnes Mars poskytuje téměř všechny služby jako Novell NetWare verze 3.12. Na jeho vývoji spolupracuje více lidí z celého světa a i Martin na projektu stále pracuje. Jak sám píše, hlavním důvodem, který ho přiměl k uvolnění Marsu do volného užívání, bylo uveřejnění Linware. Společné rysy Marsu a Linware Disky určené ke sdílení jsou ve skutečnosti určité adresáře v lokálním filesystému Linuxu a uživatelé, kteří se do emulátorů přihlašují, odpovídají každý normálnímu uživateli v Linuxu. NW přístupová práva pak vyplývají z Unixových práv uživatele k souborům a adresářům, protože jsou na uživatele uplatňována stejným způsobem, jako kdyby pracoval přímo v Linuxu (protože program, který soubory z disku čte a zasílá mu je na stanici, běží s jeho UID/GID). Ve sdílených adresářích lze použít symbolických linek, ale nelze je omezit na konkrétní podstrom. Ani jeden emulátor nezavádí implementaci klasických NW práv k adresářům a souborům, se kterými jejich vzor výhradně pracuje. Vede to k jistým omezením, ale na druhou stranu to maximálně zjednodušuje funkci emulátorů. Nepříjemnost tak může způsobit program, který pátrá po právech v adresáři, protože díky této filozofii žádná práva nenajde i přes to, že má do adresáře přístup. Do budoucna se můžeme těšit na implementaci NW práv v Marsu, kterou již Martin Stower v konferenci oznámil. Hesla pro Linux a pro emulátor jsou vedena zvlášť, protože při autentifikaci do emulátoru nevyhovuje systém používaný v Unixu, kde jsou hesla šifrována tak, že z uložené zakódované podoby nelze zpětně zjistit původní heslo. Výskyt dvou různých hesel na jednom počítači tak může být zdrojem drobných potíží pro uživatele systému. Na druhou stranu oba programy umožňují měnit heslo do emulátoru klasickými NW utilitami přímo ze stanice pomocí funkcí protokolu NCP stejným způsobem, jako měníme heslo na NetWare serveru. Hlavní rozdíly mezi Marsem a Linware Pokusím se stručně popsat hlavní rozdíly mezi oběma programy, které jsou vidět zvenčí. Nebudu se zabývat ani vlastní stavbou obou programů ani jejich testováním například na rychlost, stabilitu a jiná další měřítka. Spolu s vybudováním kvalitní metodiky je to námět nejméně na jednu větší samostatnou práci. Mars je složen z více programů, ale navenek pracujeme jen s jedním. Každého připojeného uživatele obsluhuje samostatný proces. Má jen jeden konfigurační soubor, který je poměrně obsáhlý, přehledný a jednotlivé volby jsou v něm dobře dokumentovány. Nastavit lze téměř vše a jen velmi málo voleb je nastavitelných pouze při kompilaci, což přispívá k uživatelskému komfortu. Mars umí vytvořit tiskové fronty, do kterých můžeme zasílat tiskové úlohy a také tiskový server, který může odebírat úlohy z jiných NW tiskových front. Z front mohou být úlohy směrovány přímo do linuxového tiskového systému nebo lze využít jakýkoliv jiný tiskový server, který se dokáže na NW tiskové fronty napojit. Bindery databáze je uložena v samostatných souborech a obsahuje i zakódovaná hesla uživatelů. Mezi nejsympatičtější rys patří podpora dlouhých jmen, takže z Windows 95 lze pracovat i s dlouhými názvy (v NetWare je to tzv. OS/2 namespace) na NW discích. Dokumentace je přiměřená, v německém jazyce obsáhlejší. Linware je jen jeden jediný démon, který sám obsluhuje všechny připojené uživatele. Potřebuje ovšem pro korektní běh dva další démony IPXRIPD a IPXSAPD. Konfigurační soubor je jeden a je oproti Marsu nepoměrně skromější. Linware nepodporuje tiskové fronty, nemá bindery databázi. Hesla jsou uložena v zakódované podobě ve speciálním souboru /etc/lwpasswd. Hlavní výhodou Linware je vlastnost, že umí zkracovat dlouhá jména a umožňuje tak i v prostředí DOSu editovat soubory s dlouhými jmény, což je výhodné například pro úpravy WWW stránek z Windows 3.x, které jsou na mnoha místech stále používány pro svoji nenáročnost. Na druhé straně neposkytuje soubory s dlouhými názvy pomocí OS/2 namespace, což může být na překážku. Dokumentace je stručná. Linware potřebuje pro svou činnost patch na jádro, a tak se nevyhneme jeho kompilaci. Bootování stanic pomocí BootROM Abychom omezili šíření virů ve své počítačové síti, je vhodné i přes to, že máme v každé stanici harddisky, bootovat stanice pomocí BootROMek ze serveru. Obrazy bootovacích disket jsou na serveru chráněny před viry a my máme k dispozici po restartu stanice čistý a hlavně funkční počítač. BootROMky používají k otevírání obrazů na serveru stadardní funkce NCP protokolu, takže lze bootovat i z obrazů umístěných na emulátorech. Výjimkou jsou BootROMky, které používají výhradně RPL protokol. Ten není v Linuxu implementován a tak máme v tomto ohledu smůlu. Bootovat je samozřejmě možné i bezdiskové stanice. Nasazení Marsu a Linware aneb jak je mám rád Oba emulátory provozuji již poměrně dlouho. Dětské nemoci mají už za sebou a lze je poměrně seriózním způsobem využívat. Linware používám pro jeho schopnost zkracovat dlouhá jména souborů pro sdílení domácích adresářů Linuxu. Uživatelé tak mohou například snadno upravovat své WWW stránky z DOSu nebo Windows 3.x. Mars jsem nasadil do jedné učebny ve škole, kde je 11 bezdiskových stanic, které bootují pomocí BootROM a provozuje se na nich DOS a Windows 3.x. Linux nahradil NW server, běží na něm WWW server, proxy, obstarává dial-up a podobně. Subjektivním pozorováním lze říci, že ani po zdvojnásobení operační paměti z 16 na 32MB a výměně procesoru 486DX4/100 za Pentium 120 nedosahuje sdílení disků rychlosti původního NW serveru. Problémy jsou zejména v situaci, kdy stanice s Windows 3.x používají odkládací soubor na sdílených discích. Kontrolka HDD se rozsvítí a stanice na dlouhé vteřiny doslova ztuhnou. Problém bude nejspíše v optimalizaci přístupu k disku, která pro tento účel v Linuxu asi není nejvhodnější. Celkový přínos výměny OS (při dnešních cenách hardware) ovšem považuji přesto za kladný. Na ostatních místech, kde jsem Mars instaloval, pracuje více než uspokojivě, protože neplní úlohu jediného serveru se spoustou bezdiskových stanic, a nejsou na něj tak kladeny extrémní nároky. Závěr Pokud si myslíte, že Mars nebo Linware může plně nahradit NetWare servery od Novellu, zažijete nejspíše zklamání. Profesionální řešení od firmy Novell vyniká v mnoha ohledech, zejména však v rychlosti, nenáročnosti na hardware a komplexnosi nabízených služeb. Konkurovat však nemůže v požadavcích na flexibilitu, univerzálnost a hlavně cenu. To je místo, kam Mars a Linware patří a kde jistě cítíte i vy sílu Linuxu. Nezbývá, než se smířit s daným stavem věcí a využít především silné stránky každého řešení. výheň