Měl jsem nedávno další diskuzi na téma NewSID a SYSPREP. Tak se tu k tomu vyjádřím, protože to, co napáchal Rusinovič se svým NewSIDem je celosvětová tragédie :-) Ten chlápek si sice nakonec, cca v roce 2009 všiml, že to není úplně to pravé ořechové, ale za těch 9 let způsobil dokonalé zmatení.
Existuje utilita NewSID, pomocí které někdo klonuje stanice. To je špatně. A vždycky bylo. Ještě víc je to špatně na klonování serverů. Jediná supportovaná a skutečně funkční metoda je SYSPREP. A ani ta nefunguje na všechny případy.
Problém klonování stanic a serverů
Když si nainstalujete operační systém, při instalaci se v něm nastaví nejrůznější unikátní identifikátory. Vygenerují se náhodně, případně se do toho přidává nějaká unikátní identifikace, jako je například MAC adresa, aby byly co nejnáhodnější. Jedním z příkladů je lokální SID stanice. Jiným příkladem je nějaké ID služby Distributed Transaction Coordinator (DTC). Jiným příkladem jsou některá unikátní CLSID a APPID některých DCOM služeb. Další je třeba unikátní ID instalace (MachineGuid), prostě v registrech je náhodné číslo. Windows Update Client má svoje ID. Terminal Services (Remote Desktop Services) klient má svoje ClientHWID. Atd.
Nejen, že to dělá operační systém, ale takto fungují i některé programy. Příkladem je třeba SharePoint. Jakmile připojíte nějaký front-end do farmy, vygeneruje si při té příležitosti svoje vlastní IDčko, které ho odlišuje od ostatních členů farmy. Terminal Services (Remote Desktop) Licensing služba má také svoje ID a podle něho si zapisuje do ADčka accounting informace.
Nikdy nevíte, co má který program za jaké unikátní identifikace.
Pokud mají programy spolupracovat po síti, obvykle nesmí mít "to svoje" unikátní ID stejné. Prostě to závisí na druhu programu a jak on sám to svoje ID používá. Některé to nepotřebují, některé ho používají. To se prostě neví které a jak. To ví jen výrobce daného programu, operačního systému nebo služby. Garantuju, že Rusinovič to neví.
Když počítač naklonujete, musíte nechat ta IDčka změnit.
NewSID a SYSPREP
Rusinovič si v roce 2000 všiml, že sdílené soubory, mezi stanicemi v pracovní skupině, nefungují, pokud jsou stanice naklonovány. Zjistil, že to je tím, že ty mašiny se identifikují pomocí svého SIDu. To, že ty stanice a jejich programy mají každý nějakou svou jinou identifikaci, si už nevšiml.
Protože to byl slavnej Rusinovič, napsal utilitku NewSID a začal ji vydávat za ultimátního klonovače. Tahle utilitka změní jenom SID mašiny. Nic jiného nemění.
Přitom už od raného středověku existuje oficiální klonovací utilita SYSPREP od Microsoftu. Ta nejen že změní SID. Ona také změní i ty další identifikace. Jak to dělá? No má k tomu pludžiny (já vím, že se to tak nečte :-)). Každá služba (její produktový tým), nebo výrobce nějaké aplikace si může dodat pludžin.
Když děláte SYSPREP, ta utilitka je vcelku obecná. Jednoduše zavolá postupně všechny zaregistrované pludžiny. Každý pludžin si provede co pořebuje, aby se jeho aplikace dala klonovat.
Takže když naklonujete počítače NewSIDem, bude fungovat všechno, co případně závisí na unikátním SIDu. Všechno, co má jinou unikátní identifikaci, fungovat nebude. Příkladem je třeba WSUS, nebo replikace SQL Serveru. Mám taky špatné zkušenosti s SCCM klienty - ale to je jen podezření, těžko se to identifiuje.
Různé aplikace a nedostatečný SYSPREP
Pozor! Ani SYSPREP není samospásný. On potřebuje na všechno plug-in. Pokud plug-in nemá, tak to prostě neumí klonovat danou aplikaci. Příkladem je SharePoint připojený do farmy. Žádný pludžin, žádné klonování. Dokonce třeba Office, když ho chcete rearmnout (prostě deaktivovat), tak to musíte spustit ručně OSPPREARM.EXE - SYSPREP vám v tom sám nepomůže.
Pokud chcete něco klonovat, musíte si zjistit sami, jaké na tom daném stroji máte aplikace. Pro každou jednotlivě si musíte u výrobce ověřit, že to buď jde klonovat obecně, nebo že to jde klonovat při použití SYSPREP. Pokud to výrobce nepodporuje (nebo vůbec netuší, co po něm chcete), tak vám nepomůže ani svěcená voda.
Závěrr
Typuju, že Rusinoviče vzali do Microsoftu jenom kvůli tomu, aby mu tam mohli tohle vysvětlit. Zajímalo by mě, jak dlouho ho museli mučit, aby se přiznal. Ale jinak mám toho chlápka docela rád, napsal bezva Internals. I když by do těch novějších verzí mohl trošku víc zapracovat :-)