Sunday, July 20th, 2008...11:56 pm

Komunikat "Access denied" przy promocji RODC w domenie

Jump to Comments

Jakiś czas temu jeden z przyjaciół z MCS (przy okazji znajomy jeszcze z czasów MVP co pokazuje, że od MVP prosta droga na Ciemną Stronę Mocy 🙂 )napotakł na problem z promocją pierwszego RODC w domenie. Problem objawiał się odmową dostępu (access denied) w przypadku promocji DC w ramach jednej z domen potomnych lasu. Rozwiązanie zostało w miarę szybko znalezione dzięki wspólnej pracy kilku ludzi na liście dyskusyjnej, a przy okazji ja miałem też przyjemność uczestniczyć w tym procesie. Ponieważ od tego czasu identyczny problem został zgłoszony jeszcze dwa razy, postanowiłem odtworzyć go na swoich maszynach wirtualnych (dziękuję "magii" która sprawiła, że w moim laptopie pojawiło się 4 GB RAM) i opisać zarówno przyczynę jak i rozwiązanie.

Prawdopodobnie za jakiś czas całość zostanie opisana w ramach ładnego artykułu KB, ale do tego czasu niech Google i Live zindeksują ten wpis i może się komuś on przyda.

Miłego czytania …

Objawy

Przy promocji Read-Only Domain Controller (RODC) w ramach domeny proces promocji przerywany jest z błędem. W pliku dziennika DCPROMO.LOG można znaleźć następujący błąd:

<date and time> [INFO] Error – Active Directory Domain Services could not replicate the directory partition <Domain DN> from the remote Active Directory Domain Controller <DC FQDN>. (8453)
<date and time> [INFO] EVENTLOG (Error): NTDS General / Internal Processing : 1168
Internal error: An Active Directory Domain Services error has occurred.

Additional Data

Error value (decimal):
-1073741790

Error value (hex):
c0000022

Internal ID:
30014c7

Dodatkowo w dzienniku zdarzeń usługi katalogowej logowane jest zdarzenie o  Event ID 1168, które zawiera następujące informacje:

Log Name:      Directory Service

Source:        Microsoft-Windows-ActiveDirectory_DomainService

Date:          <date and time>

Event ID:      1168

Task Category: Internal Processing

Level:         Error

Keywords:      Classic

User:          ANONYMOUS LOGON

Computer:      <DC name>

Description:

Internal error: An Active Directory Domain Services error has occurred.

Additional Data

Error value (decimal):

-1073741790

Error value (hex):

c0000022

Internal ID:

30014c7

Zgłaszany kod błędu c00000022 przekłąda się na następujący opis:

C:\>err c0000022
# for hex 0xc0000022 / decimal -1073741790
  STATUS_ACCESS_DENIED                                           ntstatus.h
# {Access Denied}
# A process has requested access to an object, but has not
# been granted those access rights.

 

Przyczyna

Podczas operacji adprep /rodcprep na partycji katalogu tworzone jest kilka wpisów ACE (Access Control Entries) dotyczących uprawnień na katalogu. Listę wykonywanych w ramach rodcprep operacji można znaleźc w artykule : Read-Only Domain Controller Updates. Wpisy te nadają między innymi dwa uprawnienia dla grupy "Enterprise Read-only domain controller" (ERODC). Grupa ta przedstawiona jest w ramach tych operacji poprzez identyfikator SID (tak zwany well-known SID) z identyfikatorem RID 498. Pełny SID tej grupy ma więc postać:

<FOREST ROOT DOMAIN SID>-498

Dla głównej domeny lasu z  SID S-1-5-21-329151704-1384884650-1385766050 it będzie on więc wyglądał następująco:

S-1-5-21-329151704-1384884650-1385766050-498

Uwaga: Grupa ERODC jest grupą uniwersalną, która tworzona jest w głównej domenie lasu, dlatego posługuję się powyżej identyfikatorem SID głównej domeny lasu.

Grupa ERODC identyfikowana jest tutaj poprzez SID ponieważ nie jest ona tworzona autoamtycznie w chwili wykonania operacji adprep i w chwili nadawania tych uprawnień po prostu nie istnieje. Tworzona jest ona w dwóch następujących sytuacjach:

  • Przeniesieniu roli PDC Emulator w głównej domenie lasy na kontroler domeny oparty o Windows Server 2008. Po utworzeniu tej grupy rola ta może zostać przeniesiona  z powrotem na serwera inny niż 2008, na przykład poprzedniego właściciela. Informacje jak przenieść rolę PDC Emulator znajdują się w artykule KB 255504.
  • Promocji pierwszego RODC w głównej domenie lasu.

Brak tych uprawnień przypisanych do grupy ERODC powoduje, że nie jest możliwa do wykonania replikacja danych katalogu i promocja kontrolera kończy się błędem opisanym powyżej.

Istnienie odpowiednich wpisów ACE może być łatwo sprawdzone z użyciem dowolnego narzędzia pozwalającego na przegląd uprawnień na katalogu.  Przy użyciu adfind.exe (http://www.joeware.net/freetools/tools/adfind/) pozwala na to następująca składania:

adfind -b DC=W2k,DC=PL -s base  ntsecuritydescriptor -sddl+

która w przypadku poprawnej sytuacji po wykonaniu rodcprep powinna zwrócić taki wynik:

Using server: rootdc.w2k.pl:389
Directory: Windows Server 2003

dn:DC=W2k,DC=PL
>nTSecurityDescriptor: [OWNER] BA
>nTSecurityDescriptor: [GROUP] BA
>nTSecurityDescriptor: [DACL] AI

(…)

>nTSecurityDescriptor: [DACL] OA;;CR;Replicating Directory Changes;;S-1-5-21-329151704-1384884650-1385766050-498

(…)

>nTSecurityDescriptor: [SACL] OU;CISA;WP;gPOptions;organizationalUnit;WD

1 Objects returned

Jak widać, w ramach wyników ADFIND grupa ERODC jest przedstawiona przy pomocy identyfikatora SID. Dzieje się tak dlatego, że grupa ta jeszcze nie została utworzona w ramach katalogu. Podobny rezultat możemy otrzymać przy pomocy dsacls.exe  (standardowe narzędzie z Support Tools, dostępne jako wbudowane w Windows Server 2008):

C:\>>dsacls DC=w2k,dc=pl

Owner: BUILTIN\Administrators
Group: BUILTIN\Administrators

Access list:
Allow Everyone                        SPECIAL ACCESS
                                      READ PROPERTY

(…)

Allow W2K\Enterprise Read-only Domain Controllers
                                      Replicating Directory Changes

(…)

The command completed successfully

W tym wypadku, grupa została przedstawiona jako nazwa, ponieważ polecenie zostało wykonane już po utworzeniu grupy ERODC.

Rozwiązanie

Aby rozwiązać ten problem należy utworzyć odpowiednie, brakujące wpisy na liście DACL obiektu domeny (w zasadzie kontekstu nazewniczego katalogu) w której występuje problem . Można tego dokonać następująco:

  • Przy użyciu GUI ADU&C lub innego, który pozwala na edycję uprawnień katalogu.

  • z linii poleceń, przy pomocy dsacls.exe lub dowolnego innego narzędzia pozwalajacego na zarządzanie uprawnieniami w katalogu. Używając SID:

dsacls DC=w2k,dc=pl /G "S-1-5-21-329151704-1384884650-1385766050-498:CA;Replicating Directory Changes"

lub pełnej nazwy grupy:

dsacls DC=w2k,dc=pl /G "W2k\Enterprise Read-only Domain Controllers:CA;Replicating Directory Changes"

Uwaga: możliwość użycia identyfikatora SID do nadania uprawnień może zależeć od użytego narzędzia. W rzeczywistej domenie oczywiście należy zmodyfikować nazwę obiektu oraz identyfikator SID grupy :).

W poprawnej konfiugracji, dla każdej domeny w której wykonana została operacja rodcprep  powinny zostać utworzone dwa wpisy ACE dla grupy ERODC. W ramach drugiego, grupa ta otrzymuje uprawnienia  "List contents" oraz "Read all properties" aplikowane do obiektu na którym zostały nadane ("This object only"). Jeżeli brakuje również tego wpisu należy go dodać używając GUI:

lub linii poleceń i DSACLS.EXE:

dsacls DC=w2k,dc=pl /G "S-1-5-21-329151704-1384884650-1385766050-498:LCRPLO;;"

I to w zasadzie powinno rozwiązać problemy :).

Informacje dodatkowe

W przypadku lasu złożonego z wielu domen operacja ta może być konieczna do wykonania w każdej z domen, w których wykonywana będzie promocja RODC.

Credits (jak to po polski napisać??)

W zidentyfikowaniu problemu oraz jego rozwiązaniu główną zasługę ma Matjaz Ladava z MCS SLovernia oraz ludzie z MCS i PSS, którzy poświęcili swój czas na pracę nad nim (Herbert, Robert i inni – dzięki)
.

1 Comment

Leave a Reply