Tag-Archiv für » vererbung «

02 | 04 | 2019

AD User mit ausgeschalteter Vererbung der Rechte finden mit PowerShell – revisited

Geschrieben von um 15:15 Uhr

Vor sieben Jahren habe ich mal hier beschrieben, wie man schnell alle User mit ausgeschalteter Rechtevererbung findet. Damals war das Quest AD-Modul (aus ActiveRoles) das Mittel der Wahl, welches mittlerweile nicht mehr (kostenlos) verfügbar ist. Hier ein Code Snippet, um das gleiche mit dem nativen AD-Modul des Windows Servers zu erreichen:

$users = Get-ADUser -LDAPFilter "(mail=*)"
foreach ($user in $users) {
    $adsu = [ADSI]"LDAP://$($user.DistinguishedName)"
    if ($adsu.PSBase.objectSecurity.AreAccessRulesProtected) {
        $user.DistinguishedName
    }
}

Das Zurücksetzen der Vererbung ist etwas komplizierter als bei Quest und benutzt den AD-Provider aus dem Modul:

$users = Get-ADUser -LDAPFilter "(mail=*)"
foreach ($user in $users) {
    $adsu = [ADSI]"LDAP://$($user.DistinguishedName)"
    if ($adsu.PSBase.objectSecurity.AreAccessRulesProtected) {
        $acl = Get-ACL "AD:\$($user.DistinguishedName)"
        $acl.SetAccessRuleProtection($false,$false)
        Set-ACL -ACLObject $acl -Path "AD:\$($user.DistinguishedName)"
    }
}

Man sollte im Hinterkopf behalten, dass bei Mitgliedern in Admin-Gruppen diese Änderung durch AD wieder zurückgerollt werden wird (Stichwort AdminSDHolder), und bei produktivem Einsatz vielleicht eine Prüfung einbauen.

Happy migrating!

Tags » , , , , , «

+

12 | 01 | 2012

AD User mit ausgeschalteter Vererbung der Rechte finden mit PowerShell

Geschrieben von um 12:04 Uhr

Bei Migrationen auf Exchange 2010 gibt es immer wieder das Phänomen, daß bei Benutzern, deren Berechtigungen in AD nicht von ihrer OU geerbt, sondern explizit vergeben sind, ActiveSync nicht in der Lage ist, ein Mobile Device-Objekt anzulegen. Resultat: Keine Synchronisation mit dem Smartphone und Event 1053 auf dem CAS Server.

Sind nur wenige User betroffen, kann man den Haken bei „Berechtigungen des übergeordneten Objekts übernehmen“ freilich auch manuell setzen, zumal im Text der Fehlermeldung die User jeweils spezifiziert sind. Möchte man aber dem Problem von vorn herein aus dem Weg gehen, muß man solche Accounts global identifizieren und bereinigen können.

Das geht sehr einfach mit PowerShell und den Quest AD CMDlets:

Get-QADUser -SizeLimit 0 | Where-Object {$_.DirectoryEntry.PSBase.ObjectSecurity.AreAccessRulesProtected}

Und um die Berechtigungen bei diesen Accounts wieder zu vererben:

Get-QADUser -SizeLimit 0 | Where-Object {$_.DirectoryEntry.PSBase.ObjectSecurity.AreAccessRulesProtected} | Set-QADObjectSecurity -UnLockInheritance

Natürlich soltle man sich, wie bei allen globalen Operationen, vorher fragen, ob die Berechtigungen nicht absichtlich so gesetzt sind, und dann entsprechend granular vorgehen.

Der Dank für dieses kleine Juwel geht an Shay Levi.

Tags » , , , , «

+