rr-stefan
Goto Top

AD: Objektverwaltung zuweisen - User - employeeID

Guten Tag,
ich versuche an eine Gruppe Rechte zu delegieren um die AD Felder employeeType, employeeNumber und employeeID zu füllen.

Bisheriges Vorgehen:
- Im Kontext der OU deren Mitglieder editiert werden sollen den Assistenten "Objektverwaltung zuweisen" aufgerufen
- Gruppe, die die Berechtigungen erhalten soll ausgewählt
- Benutzerdefinierte Aufgaben zum Zuweisen erstellen ausgewählt
- Folgende Objekte im Ordner gewählt und dort "Benutzer"-Objekte selektiert
- Eigenschaften spezifisch ausgewählt
- Nun findet man die Werte employeeNumber lesen / schreiben und employeeType lesen schreiben

Hier fehlt der Wert employeeID!!!

Nach meiner bisherigen Recherche bin ich dann zur Datei C:\Windows\System32\dssec.dat gekommen.
Hier habe ich zum einen alle vorhandenen Einträge (testweise) von employeeID von 7 auf 0 gesetzt und ebenfalls im Abschnitt [USER] einen solchen Eintrag ergänzt.

Nach einem Neustart der Benutzer und Computer MMC sollte nach mehreren Anleitungen das Feld nun zur Verfügung stehen um Berechtigungen erteilen zu können.

Dies ist leider nicht der Fall.

Hat jemand noch eine Idee wie verfahren werden sollte? Vielen Dank!

Content-ID: 525132

Url: https://administrator.de/contentid/525132

Ausgedruckt am: 25.11.2024 um 23:11 Uhr

142232
142232 13.12.2019 aktualisiert um 14:30:10 Uhr
Goto Top
Die Liste dort ist nicht vernünftig sortiert auch wenn man das meint und die Attribute sind dort teilweise auf Deutsch übersetzt und teilweise nicht. Man muss nur ganz penibel die Liste durchgehen dann findet man die gewünschten Attribute, sonst überscrollt man das gesuchte Attribut, Microsoft typisch halt.
DerWoWusste
DerWoWusste 13.12.2019 aktualisiert um 15:06:04 Uhr
Goto Top
Ich würde diesen himmelschreienden Wizard zum Mond schießen, und stattdessen mit der Ldp.exe (hat auch eine GUI!) arbeiten. Mit "Add trustee" kannst Du zu berechtigende Nutzer/Gruppen eintragen und die Attribute sind dort vernüntig aufgelistet.

Veranschaulichung: Siehe Ein besserer Weg zur Delegation of Control für Bitlocker Recoverykeys
oder auch hier:
capture
142232
Lösung 142232 13.12.2019 aktualisiert um 16:32:46 Uhr
Goto Top
Und als Ergänzung für den Wizard, das Attribut ist dort als "Arbeitnehmerkennung lesen/schreiben" hinterlegt.

screenshot
colinardo
colinardo 13.12.2019, aktualisiert am 15.12.2019 um 19:53:40 Uhr
Goto Top
Servus.
Oder man nimmt die Powershell, oder auch die cmd mit DACLS usw.:

back-to-topDSACLS
dsacls "OU=Verwaltung,DC=domain,dc=tld" /I:S /G "DOMAIN\MaxMustermann:WPRP;employeeID;user"

back-to-topPowershell
function Delegate-ADProperty {
    param(
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][ValidateScript({Get-ACL "AD:$_"})][string]$ObjectDN,  
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][System.Security.Principal.IdentityReference]$Account,
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$Attribute,
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$InheritingObjects,
        [Parameter()][System.DirectoryServices.ActiveDirectorySecurityInheritance]$InheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance]::Descendents,
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$AccessRights,
        [Parameter()][ValidateSet("Allow","Deny")][string]$AccessControlType = "Allow"  

    )
    # get attribute GUID
    $GUID_ATTRIBUTE = (Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -Filter "ldapDisplayName -eq '$Attribute' -and objectClass -eq 'attributeSchema'" -Properties schemaIDGUID).schemaIDGUID -as [guid]  
    if ($GUID_ATTRIBUTE -eq $null){
        Write-Error -Message "Attribute '$Attribute' could not be found." -Category InvalidArgument  
        return
    }
    # get class GUID of inheriting objects
    $GUID_CLASS = (Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -Filter "ldapDisplayName -eq '$InheritingObjects' -and objectClass -eq 'classSchema'" -Properties schemaIDGUID).schemaIDGUID -as [guid]  
    if ($GUID_CLASS -eq $null){
        Write-Error -Message "Inheriting Object Class Name '$InheritingObjects' could not be found." -Category InvalidArgument  
        return
    }
    
    # get acl of AD object
    $acl = Get-ACL "AD:$ObjectDN"  
    
    # create AccesRule
    $rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($Account,$AccessRights,$AccessControlType,$GUID_ATTRIBUTE,$inheritanceType,$GUID_CLASS) -ErrorAction Stop
    # Add rule to acl
    $acl.AddAccessRule($rule)
    # save acl to object
    Set-ACL "AD:$ObjectDN" $acl  
    return $rule
}


Delegate-ADProperty -ObjectDN 'OU=Verwaltung,DC=domain,dc=tld' -Account ([System.Security.Principal.NTAccount]"MaxMustermann") -Attribute "employeeID" -InheritingObjects 'user' -AccessRights "ReadProperty,WriteProperty" -AccessControlType Allow -InheritanceType Descendents  
Grüße Uwe
RR-Stefan
RR-Stefan 16.12.2019 um 10:07:29 Uhr
Goto Top
Vielen Dank für die verschiedenen Ansätze. Ich habe es in diesem Fall mit dem Hinweis auf die Benennung im Wizard gelöst.

Merci.