2010-10-27

Lägga med en dator i en behörighetsgrupp utan omstart av servern... Går det?

Om man lägger med ett användarkonto i en säkerhetsgrupp i ADt så måste användaren logga och och sedan logga in igen för att inställningarna från säkerhetsgruppen skall appliceras,och exakt samma regler gäller för om man lägger med ett datorkonto i en grupp...

För några dagar sedan hade jag en group policy ("GPO", eller "Group Policy Object") jag ville skulle läggas på ett gäng datorer. Av en mängd orsaker kunde jag inte lägga på GPOn på alla datorer i ett visst OU utan bara på ett fåtal (skulel bli problem annars). Eftersom att jag inte kunde ändra strukturen i ADt (med nya OUn) blev lösningen att skapa en säkerhetsgrupp i ADt och sätta behörigheter på Group Policyn så att enbart datorer som var med i gruppen skulle få policyn.

Detta är inte direkt raketforskning. Problemet uppstod när policyn inte applicerades... Detta i sin tur för att ett konto får sina behörighetsgrupper när kontot loggar in i domänen (lite förenklat, men typ så) och detta gäller även ett datorkonto.
Ett datorkonto loggar in i domänen när datorn startas om. Lösningen skulle alltså vara att starta om servarna.
Men det var just det jag inte kunde göra, i alla fall inte utan att få ett servicefönster (och det kan ta en stund ibland...).

Men, det går faktiskt att använda ett verktyg som finns i Windows 2003 Resource Kit och har man en 2008-server så ligger verktyget redan med.... Verktyget heter "klist" och används för att titta på, radera eller förnya Kerberos Tokens.
Det låter kanske inte som nått speciellt, men genom att förnya Kerberos Token så får datorn reda på vilka grupper som kontot ligger med i. :)

Lösningen för mig var att på windows 2008 maskinerna:
  • starta en kommandopromt som Adminstrator
  • Kör "klist –li 0x3e7 purge"
  • för att få GPOn att slå så körde jag därefter kommandor "gpupdate /Target:computer"
  • KLART!!!
Lösningen på windows 2003 maskiner är lite klurigare men det är den jag är riktigt nöjd med.. :)
  • Se till att ladda ned "klist.exe" från Windows 2003 resoucekit (det går att kopiera klist.exe från en annan maskin om man behöver, exe-filen är allt som behövs)
  • Logga in på KONSOLEN på servern (det måste vara konsolen för att nästa steg skall funka. Det går inte med en vanlig RDP-session, det måste vara mot riktiga konsolen)
  • Starta en kommandopromt som localsystem (detta gör man genom att köra kommandot "AT HH:MM /interactive cmd.exe" Där HH och MM är ett klockslag en minut framåt i tiden (ibland måste man ange AM/PM också…. Det beror på localized setting i Operativsystemet)
  • En minut senare så öppnas en kommandoprompt som local system
  • Kör kommandot: "klist purge" och svara "y" på alla eventuella frågor.
  • Därefter kör man "gpupdate /Target:Computer" i ett kommandofönster
  • *häpp* 
En rätt snygg lösning för att slippa starta om servarna om jag får säga det själv... :)
Orsaken det funkar på en Windows 2003 burk är att man kör kommandot som local system.
Hela hemligheten med att använda "AT" kommandot är att AT körs som local system.Om jag då schemalägger att öppna en kommandopromt en minut fram i tiden så kommer jag att få tillgång till en kommandopromt som är inloggad som systemet självt..

Det skall även sägas att man kan ju skita i att göra allt ovanstående och bara vänta tills dess att Kerberos Ticketen har gått ut. Detta tar normalt 7 dagar så väntar man en vecka så slipper kan köra ovanstående... Det är helt enkelt en fråga om hur bråttom man har. :)




Inga kommentarer:

Skicka en kommentar

Related Posts Plugin for WordPress, Blogger...