| Vererbungsoption | ACE gilt für | ||
| aktuell | Kinder | Enkel | |
| (CI) | ja | ja | ja |
| (CI NP) | ja | ja | nein |
| (NI) | ja | nein | nein |
| (IO) | nein | ja | ja |
| (IO NP) | nein | ja | nein |
| @echo ### Berechtigungen fuer Elternschluessel
hklm\Software\Test testen:
RegDACL hklm\Software\Test /l @echo ### neuen Pfad in der Registrierung
anlegen:
@echo ### Berechtigungen fuer hklm\Software\Test\Demo\Kind1
testen:
@echo ### Berechtigungen fuer hklm\Software\Test\Demo
setzen:
@echo ### neue Berechtigungen fuer hklm\Software\Test\Demo
testen:
@echo ### Berechtigungen fuer hklm\Software\Test\Demo\Kind1
testen:
@echo ### neuen Pfad in der Registrierung
anlegen:
@echo ### Berechtigungen fuer hklm\Software\Test\Demo\Kind2
testen:
@echo ### Berechtigungen fuer hklm\Software\Test\Demo\Kind2\Enkel2
testen:
|
| 1
2 |
C:\Reg> Demo1
### Berechtigungen fuer Elternschluessel hklm\Software\Test testen: |
| 3 | C:\Reg> RegDACL hklm\Software\Test /l |
| 4
5 6 7 |
DACL (Zugriffskontrolliste)
für den Registrierungsschlüssel
"hklm\Software\Test": (CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren (CI) ALLOW Vollzugriff NT-AUTORITÄT\SYSTEM |
| 8 | ### neuen Pfad in der Registrierung anlegen: |
| 9
10 |
C:\Reg> reg add hklm\Software\Test\Demo\Kind1\a=1
Der Vorgang wurde erfolgreich beendet. |
| 11 | ### Berechtigungen fuer hklm\Software\Test\Demo\Kind1 testen: |
| 12 | C:\Reg> RegDACL hklm\Software\Test\Demo\Kind1 /l /e |
| 13
14 15 16 |
DACL (Zugriffskontrolliste)
für den Registrierungsschlüssel
"hklm\Software\Test\Demo\Kind1": (ID-CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren (ID-CI) ALLOW Vollzugriff NT-AUTORITÄT\SYSTEM |
| 17
18 19 20 |
Effektive Berechtigungen
für den Registrierungsschlüssel
"hklm\Software\Test\Demo\Kind1": Vollzugriff VORDEFINIERT\Administratoren Vollzugriff NT-AUTORITÄT\SYSTEM |
| 21 | ### Berechtigungen fuer hklm\Software\Test\Demo setzen: |
| 22 | C:\Reg> RegDACL hklm\Software\Test\Demo /sge:Q(ni) /sga:F(ci) /sgs:RWO(io) /sgi:r(ci-np) /sgn:qw(io-np) |
| 22
23 |
Setzen der Berechtigung
Q(NI) für wirklich "Jeder"
- neuer Eintrag wird hinzugefügt |
| 24
25 26 |
Setzen der Berechtigung
F(CI) für vordefinierte Gruppe "Administratoren"
- neuer Eintrag wird hinzugefügt Warnung: Ein ererbter Eintrag für dieses Konto wird nicht geändert! |
| 27
28 29 |
Setzen der Berechtigung
RWO(IO) für vordefinierte Gruppe "System"
- neuer Eintrag wird hinzugefügt Warnung: Ein ererbter Eintrag für dieses Konto wird nicht geändert! |
| 30
31 |
Setzen der Berechtigung
R(CI-NP) für vordefinierte Gruppe "Interaktiv"
- neuer Eintrag wird hinzugefügt |
| 32
33 |
Setzen der Berechtigung
QW(IO-NP) für vordefinierte Gruppe "Netzwerk"
- neuer Eintrag wird hinzugefügt |
| 34 | ### neue Berechtigungen fuer hklm\Software\Test\Demo testen: |
| 35 | C:\Reg> RegDACL hklm\Software\Test\Demo /l /e |
| 36
37 38 39 40 41 42 43 44 |
DACL (Zugriffskontrolliste)
für den Registrierungsschlüssel
"hklm\Software\Test\Demo": (NI) ALLOW Q--------- Jeder (CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren (IO) ALLOW QW-EN--S-O NT-AUTORITÄT\SYSTEM (CI-NP) ALLOW Lesen NT-AUTORITÄT\INTERAKTIV (IO-NP) ALLOW QW-------- NT-AUTORITÄT\NETZWERK (ID-CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren (ID-CI) ALLOW Vollzugriff NT-AUTORITÄT\SYSTEM |
| 45
46 47 48 49 50 |
Effektive Berechtigungen
für den Registrierungsschlüssel
"hklm\Software\Test\Demo": Q--------- Jeder Vollzugriff VORDEFINIERT\Administratoren Lesen NT-AUTORITÄT\INTERAKTIV Vollzugriff NT-AUTORITÄT\SYSTEM |
| 51 | ### Berechtigungen fuer hklm\Software\Test\Demo\Kind1 testen: |
| 52 | C:\Reg> RegDACL hklm\Software\Test\Demo\Kind1 /l |
| 53
54 55 56 57 58 59 |
DACL (Zugriffskontrolliste)
für den Registrierungsschlüssel
"hklm\Software\Test\Demo\Kind1": (ID-CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren (ID-CI) ALLOW QW-EN--S-O NT-AUTORITÄT\SYSTEM (ID-NI) ALLOW Lesen NT-AUTORITÄT\INTERAKTIV (ID-NI) ALLOW QW-------- NT-AUTORITÄT\NETZWERK (ID-CI) ALLOW Vollzugriff NT-AUTORITÄT\SYSTEM |
| 60 | ### neuen Pfad in der Registrierung anlegen: |
| 61
62 |
C:\Reg> reg add hklm\Software\Test\Demo\Kind2\Enkel2\a=1
Der Vorgang wurde erfolgreich beendet. |
| 63 | ### Berechtigungen fuer hklm\Software\Test\Demo\Kind2 testen: |
| 64 | C:\Reg> RegDACL hklm\Software\Test\Demo\Kind2 /l |
| 65
66 67 68 69 70 71 |
DACL (Zugriffskontrolliste)
für den Registrierungsschlüssel
"hklm\Software\Test\Demo\Kind2": (ID-CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren (ID-CI) ALLOW QW-EN--S-O NT-AUTORITÄT\SYSTEM (ID-NI) ALLOW Lesen NT-AUTORITÄT\INTERAKTIV (ID-NI) ALLOW QW-------- NT-AUTORITÄT\NETZWERK (ID-CI) ALLOW Vollzugriff NT-AUTORITÄT\SYSTEM |
| 72 | ### Berechtigungen fuer hklm\Software\Test\Demo\Kind2\Enkel2 testen: |
| 73 | C:\Reg> RegDACL hklm\Software\Test\Demo\Kind2\Enkel2 /l |
| 74
75 76 77 78 |
DACL (Zugriffskontrolliste)
für den Registrierungsschlüssel
"hklm\Software\Test\Demo\Kind2\Enkel2": (ID-CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren (ID-CI) ALLOW QW-EN--S-O NT-AUTORITÄT\SYSTEM (ID-CI) ALLOW Vollzugriff NT-AUTORITÄT\SYSTEM |
| Zeilen 15 bis 16 | Beim Anlegen des Registrierungsschlüssels mit dem Befehl reg (aus dem Ressource-Kit) können keine Berechtigungen vergeben werden. Das System vererbt in diesem Falle die Zugriffsrechte des Vorfahren (Zeilen 6 und 7) auf den neuen Schlüssel. . |
| Zeilen 38 bis 50 | Die Berechtigungen für Netzwerk gelten nur für die Nachfahren (IO), daher gibt es für diese Gruppe keinen Eintrag mit effektiven Berechtigungen für den Schlüssel selbst. Die Berechtigungen für System in Zeile 40 gelten auch nur für die Nachfahren (IO), aber auf Grund des geerbten Eintrages auf Zeile 44 hat diese Gruppen doch effektiven Berechtigungen für den Schlüssel selbst. |
| Zeilen 55 bis 59 | In Windows 2000 wurden die Berechtigungen für diesen Schlüssel verändert, als die Berechtigungen für seinen Vorfahren in den Zeilen 28 bis 44 neu gesetzt wurden. In Windows NT wäre das nicht möglich gewesen. |
| Zeilen 67 bis 71 | Die Berechtigungen für diesen Schlüssel wurden aus denen seines Vorfahren (Zeilen 38 bis 44) abgeleitet. Der Eintrag für Jeder war nicht vererbbar, daher fehlt er beim Kindschlüssel. Entsprechend der Vorgabe (NP) wurden die Vererbungsinformationen für die Gruppen Interaktiv und Netzwerk auf "nicht vererbbar" (NI) beim Kindschlüssel geändert. Die Berechtigungen für Kind1 und Kind2 sind exakt gleich, obwohl der eine Schlüssel vor und der andere nach der Änderung der Berechtigungen für den Vorfahren erstellt wurde. |
| Zeilen 76 bis 78 | Die Berechtigungen für diesen Schlüssel wurden aus denen seines Vorfahren (Zeilen 67 bis 71) abgeleitet. Die Einträge für Administratoren und System wurden unverändert übernommen. Die Vererbungsinformationen für die Gruppen Interaktiv und Netzwerk sind nicht vererbbar (NI) und fehlen daher bei dem neuen Schlüssel. Vielleicht fragen Sie sich, wieso die beiden letzten Einträge für System nicht zu einem einzigen zusammengefügt worden. Indem das nicht getan wird, gibt es keine Probleme, alle vererbten Berechtigungen eines ACEs zu entfernen, wenn dessen Original entfernt wird. |
| 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
C:\Reg> RegOwner
hklm\software\test /l -subtree
RegOwner 2.0 - Besitzer-Manager für Registrierungsschlüssel Copyright (c) 1999-2001 Frank Heyne Software (http://www.heysoft.de) Besitzer der Registrierungsschlüssel:
C:\Reg> regdacl hklm\software\test /l -subtree DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
C:\Reg> regdacl hklm\software\test /sgo:r Setzen der Berechtigung R für vordefinierte
Gruppe "Ersteller-Besitzer"
C:\Reg> regdacl hklm\software\test /l -subtree DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
C:\Reg> RegOwner
hklm\software\test\subkey1 /t
Übernahme des Besitzes von hklm\software\Test\Kind1 C:\Reg> RegDACL hklm\software\test /l -subtree DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
C:\Reg> regdacl hklm\software\test /sgo:rwd Setzen der Berechtigung RWD für vordefinierte
Gruppe "Ersteller-Besitzer"
C:\Reg> RegDACL hklm\software\test /l -subtree DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
C:\Reg> regdacl hklm\software\test /sgo:rw Setzen der Berechtigung RW für vordefinierte
Gruppe "Ersteller-Besitzer"
C:\Reg> RegDACL hklm\software\test /l -subtree DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
DACL (Zugriffskontrolliste) für den Registrierungsschlüssel
|
| Zeilen 1 bis 7 | Wir sehen uns zu Beginn der Experimente die gegenwärtigen Besitzer von of hklm\software\test mit RegOwner an. Dieses Programm ist Bestandteil von der Vollversion von RegTools für Windows NT. Der Besitzer des Elternschlüssels ist der Administrator, während der Besitzer des Kindschlüssels Max von unserem Server ist. |
| Zeilen 11 bis 20 | Wir sehen uns zu Beginn der Experimente die gegenwärtigen Brechtigungen
des Teilbaumes, mit dem wir herumspielen wollen, an. Der Elternschlüssel
hklm\software\test ist vor der automatischen
Übernahme von Berechtigungen von seinen Vorfahren geschützt,
sein einziger Unterschlüssel dagegen nicht. Die ACEs wurden eigens
für diese Lektion geschaffen, wie, ist eine kleine Denkaufgabe für
den angehenden Windows 2000-Administrator.
Wie Sie sehen, gibt es zu jedem Schlüssel nur einen ACE für ERSTELLER-BESITZER, in dem immer das (IO)-Flag gesetzt ist. Was passiert, wenn wir versuchen, diese Einstellungen zu ändern? |
| Zeilen 24 bis 26 | Wir ändern die Berechtigungen des Elternschlüssels für ERSTELLER-BESITZER in Lesezugriff. Weil keine Vererbungsflags angegeben wurden, verwendet RegDACL den Vorgabewert (CI). |
| Zeilen 30 bis 40 | Das Result ist erstaunlich - es wurden ACEs für ERSTELLER-BESITZER, Administrator und Max geändert. Was machte Windows 2000? Es teilte den einzigen neuen (CI) ACE eigenmächtig in zwei ACEs auf - einen (NI) ACE für den gegenwärtigen Besitzer des jeweiligen Schlüssels sowie einen (IO) ACE für ERSTELLER-BESITZER. Es gibt also keine Möglichkeit, einen ACE, der effektiv für den aktuellen Schlüssel gilt, für ERSTELLER-BESITZER anzulegen. Das Betriebssystem tauscht bei einem solchen Versuch immer ERSTELLER-BESITZER gegen den aktuellen tatsächlichen Besitzer des Objekts aus. |
| Zeilen 42 bis 46 | Jetzt übernehmen wir mit RegOwner den Besitz des Unterschlüssels. |
| Zeilen 56 bis 60 | Wurden dadurch irgendwelche Einträge in der DACL dieses Schlüssels
beeinflusst?
Nein, Zeile 59 enthält noch immer den ACE für den ehemaligen Besitzer, während es keinen Eintrag für den neuen Besitzer Administrator gibt. Ich bin mir nicht sicher, ob das ein Bug oder ein Feature von Windows 2000 ist. |
| Zeilen 62 bis 66 | Wir ändern nochmals die Berechtigungen für ERSTELLER-BESITZER im Elternschlüssel. |
| Zeilen 70 bis 81 | Das Resultat für den Unterschlüssel überrascht - erst jetzt (und nicht wie erwartet nach dem Befehl in Zeile 42) wurde der ACE des früheren Besitzers Max durch den geänderten Eintrag für den aktuellen Besitzer des Unterschlüssels ersetzt. |
| Zeilen 83 bis 87 | Wir ändern nochmals die Berechtigungen für ERSTELLER-BESITZER im Elternschlüssel. |
| Zeilen 91 bis 103 | Alles funktioniert wie erwartet - mit einer Ausnahme: Der ACE in Zeile 96 wurde angelegt, obwohl bereits der ACE in Zeile 95 für den gegenwärtigen Besitzer angelegt wurde. Aber wie soll Windows auch wissen, dass es bereits der Eintrag auf Zeile 95 nicht direkt für Administrator, sondern für ERSTELLER-BESITZER angelegt hat? Also erzeugt es wieder einen neuen (und völlig redundanten) Eintrag für den aktuellen Besitzer. Wir lernen, daß es am wenigsten Ärger gibt, ACEs für ERSTELLER-BESITZER immer mit gesetztem (IO) Flag anzulegen, andererseits könnten die Resultate unerwartet sein! Zumindest so lange, bis Microsoft das Design der Vererbungsflags überarbeitet und das bisher in Windows 2000 vergessene Flag für die Markierung der ACEs von Besitzern dazubastelt. |
reg delete hklm\software\testDie letzte Zeile liefert folgendes Ergebnis:
reg add hklm\software\test\a\b\c\w=1
RegDACL hklm\software\test /sga:f /dgn:c
RegDACL hklm\software\test /pr
RegDACL hklm\software\test\a /sgn:q /dgn:w
RegDACL hklm\software\test\a\b /sgn:e /dgn:a
RegDACL hklm\software\test\a\b\c /sgn:n /dgn:o
RegDACL hklm\software\test\a\b\c /l
DACL (Zugriffskontrolliste) für den RegistrierungsschlüsselHier sind die DENY- und ALLOW-Einträge scheinbar bunt durcheinandergewürfelt. Es hat aber alles seine Ordnung. Bei einem Zugriffsversuch auf ein geschütztes Objekt wird die Zugriffskontrolllliste bekantlich von oben nach unten abgearbeitet, bis festgestellt wird, dass entweder alle angeforderten Berechtigungen gewährt werden (= Zugriff gestattet) oder wenigstens eine der angeforderten Berechtigungen verweigert wird (= Zugriff verweigert). Sind am Ende der Liste noch immer nicht alle angeforderten Berechtigungen gewährt, so wird der Zugriff ebenfalls verweigert. Explizit für ein Objekt gewährte Berechtigungen überschreiben immer die geerbten Berechtigungen, sie müssen also am Anfang der Liste stehen. Weiterhin überschreiben von den Eltern geerbte Berechtigungen solche, die von den Großeltern geerbt wurden, und so weiter.
"hklm\software\test\a\b\c":
(CI) DENY ---------O NT-AUTORITÄT\NETZWERK
(CI) ALLOW ----N----- NT-AUTORITÄT\NETZWERK
(ID-CI) DENY --------A- NT-AUTORITÄT\NETZWERK
(ID-CI) ALLOW ---E------ NT-AUTORITÄT\NETZWERK
(ID-CI) DENY -W-------- NT-AUTORITÄT\NETZWERK
(ID-CI) ALLOW Q--------- NT-AUTORITÄT\NETZWERK
(ID-CI) DENY --C------- NT-AUTORITÄT\NETZWERK
(ID-CI) ALLOW Vollzugriff VORDEFINIERT\Administratoren
Alles klar?
Wenn nach gründlicher Lektüre dieses Artikels wider Erwarten
noch Unklarheiten bezüglich des Setzens oder der Wirkung von Zugriffsberechtigungen
in der Registrierung von Windows NT herrschen, können Sie zwecks Klärung
gern eine email an fh@heysoft.de schicken.
Zuvor sollten Sie aber prüfen, ob Ihre Frage nicht schon in der
FAQ
zu Sicherheitsfragen der Windows NT Registrierung beantwortet wurde.