Alapok és kezelés I. - Csak szép sorban
A legtöbb alkalmazás interaktív. Igény szerint kattintunk, indul, fut, kattintunk, leáll. Ez így egyszerű világ, de persze nem elég ennyi funkcionalitás. Szükség van más típusú megoldásokra is, amelyek nem az interaktív alkalmazásokat kontrolálló felhasználókhoz kötődnek (de gyakorlatilag minden felhasználót kiszolgálnak, még akkor is, ha nincs bejelentkezve egy sem), amelyekkel lehetséges az erőforrások folyamatos kezelése az operációs rendszer indításától annak leállításáig. Ezért egy ilyen szolgáltatás általában egy csendesen a háttérben futó alkalmazást, folyamatot vagy esetleg ez utóbbiak gyűjteményét jelenti. Röviden szerviznek is szoktuk emlegetni, vagy éppen szerviznek (az hogy rövid vagy hosszú i-vel írjuk a nyilvánvaló helyesírási szabály ellenére számomra sem teljesen világos, így is, úgy is láttam már leírva elvileg komoly dokumentumokban, weboldalakon is). Többnyire a szervizek egy adott funkciót teljesítenek pl. más programok támogatását és ezt alacsony (de általában nem hardverközeli, mint a device driverek) szinten teszik. Olyan alapfeladatokat látnak el az operációs rendszer részeként, mint a webszolgáltatások, a naplózás, az állomány és nyomtató szolgáltatások, a replikációs szolgáltatás vagy éppen a távoli eléréssel kapcsolatos szolgáltatások. Közös tulajdonságuk még az is, hogy általában nincs külön kivezetett felhasználói felületük, nincs is szükségük erre a korrekt a működéshez, sőt ez súlyos biztonsági problémákhoz is vezethetne. A szervizek további jellemzője, hogy gyakran implementálják a szerver oldalt a szerver/kliens kapcsolatokat megvalósító alkalmazásokban, például az operációs rendszer alatt futó webszerverek esetén.
Természetesen az operációs rendszer beépített, a telepítés után rendelkezésre álló rendszer szolgáltatásain kívül a külső komplex kiszolgáló- vagy egyszerűbb alkalmazások (levelezés, adatbázis, tűzfal, proxy, vírusirtó, távmenedzsment szoftverek, stb.) saját szolgáltatásai is bekerülhetnek az alkalmazás telepítésekor a szolgáltatások közé, és rezidensen elérhetővé válhatnak az anyaalkalmazásaik számára. De arra is van mód, hogy tetszőleges futtatható állományból mi gyártsunk szervizeket manuálisan.Tetszetős rövidítések jönnek
Egy Win32 szerviznek mindig szüksége van három komponensre: a szerviz alkalmazásra (Service Application), a vezérlő programra (Service Control Program - SCP), és a szervizkezelőre (Service Control Manager - SCM). A szerviz alkalmazás jelentheti pl. a már említett webszerver holdudvarába tartozó végrehajtható állományt (Inetinfo.exe), amely aztán a webszerver telepítésekor szervizként futtathatóvá válik. Egy SCP segítségével ezt aztán el is indíthatjuk, ideiglenesen megszakíthatjuk, majd folytathatjuk, vagy akár végleg le is állíthatjuk. Windows környezetben, grafikus felületen ez lehet pl. az MMC, a videomagnóknál megszokott :D egyezményes jelű gombokkal, de természetesen az egyedi alkalmazásoknak lehet saját, beépített vezérlője is (pl. SQL Server Notification vezérlő ikon a Tálcán). Parancssorból pedig a "net start/pause/stop" parancsok állnak rendelkezésre erre a célra, vagy pl. a Resource Kit tartalmazza az Sc.exe-t, amely borzasztóan széleskörű lehetőségekhez ad hozzáférést, a parancssort kedvelők számára. A harmadik komponens, az SCM kommunikál a szervizekkel, utasításokat ad és visszajelzéseket kap pl. az állapotukról. A Service Control Manager a %SystemRoot%System32Services.exe állományban található (amely tartalmaz jónéhány beépített szervizt is), és fontos szerepe van a rendszerindításkor (is). Miután a Winlogon processz a bootolás korai szakaszában elindítja az SCM-et, az ebben lévő indító rész (SvcCtrlMain) elkezdi az automatikus indulásra beállított szervizeket betölteni a regisztrációs adatbázis
HKLMSYSTEMCurrentControlSetControlServiceGroupOrder
kulcsában lévő sorrend alapján. A betöltés több fázisban valósul meg, egy fázis egy csoportnak felel meg. Ez a folyamat körülbelül a növekvő kék csíkos képernyő és a GINA (Graphical Identification and Authentication) bejelentkező képernyőjének (ez a jólismert Logon Window) betöltése között történik meg.
Services MMC
Amikor egy olyan programot telepítünk, amely tartalmaz a program működéséhez szükséges szervizt, akkor a telepítő programnak gondoskodnia kell ezen szerviz regisztrálásáról az operációs rendszer számára. Ezért ekkor a regisztrációs adatbázisban létrejön egy egyedi kulcs a következő szakaszban:
HKLMSYSTEMCurrentControlSetServices
Az adott kulcs, a benne lévő számos paraméterrel maradandóan jellemző az adott szervizre, ergo tekinthetjük ezt a szakaszt az SCM adatbázisának (persze ebben benne vannak a device driverek is, merthogy azokat is az SCM kezeli). Ennek a felhasználó számára is kényelmesen kezelhető leképezése egy közismert SCP, a Services MMC.
Ebben az MMC-ben (elérhető az Administrative Tools programcsoportból, vagy a My Computer helyi menüjében a Manage pont alól a Management MMC-ben, vagy akár egy mmc.exe indítása után is hozzá lehet adni mint bővítményt) összesen 5 oszlopot lehetséges elővarázsolni, ezek a szervizek nevét (Name), a leírásukat (Description), az aktuális állapotukat (Status), az indítás típusát (Startup Type) valamint a szervizt futtató felhasználó nevét (Log On As) tartalmazzák. Ebből ránézésre az utolsó két oszlop az igazán érdekes (talán még az állapot is, főleg ha baj van :D).
Folytatjuk...
Gál Tamás
MCSE, MCSE:Security, MCSA, MCSA:Security, MVP
gtamas@tjszki.hu