Frage: Wie werden einzelne AD-Attribute zur Bearbeitung über AD-Gruppe berechtigt
Hallo zusammen,
ich möchte vom Personalbüro und/oder anderen Usern ohne Adminrecht AD-Adressdaten korrigieren lassen.
Hierzu habe ich das sehr schöne Script von Nils Kaczenski (http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbe ..) angepasst.
Die User die diese Daten mit og. Script bearbeiten werden wechseln häufiger, deshalb Rechte via Gruppenberechtigung.
Wenn ich der AD-Gruppe, in der diese User sind, AdminRechte gebe funktioniert alles. ;-(((
Ich möchte aber, dass die User der Gruppe nur auf einige definierte Attribute der AD Schreibrechte haben zB. (displayName, givenName, sn, physicalDeliveryOfficeName, department, pager ...)
1. Ich als "Mausschubser" kann leider nicht alle Attribute in den Eigenschaften der Gruppe>Sicherheit> Attribut-Editor finden.
Wie kann ich alle Attribute dort anzeigen und welche Werte müssten dann dort eingetragen werden (derzeit steht bei den Attributen die dort angezeigt werden <Nicht festgelegt>) ?
2. Aus der Not heraus habe ich versucht mich mit "dsacls" anzufreunden ... bin aber mehr als unsicher, auch, weil ich keine Testumgebung habe.
ich habe hierzu das Scriptbeispiel angepasst ...
(die OU "TEST_OU_HEN" liegt direkt unter der Domain, die Gruppe in dieser OU heißt "AD-Adressbearbeitung"
set OURoot="OU=TEST_OU_HEN,DC=domain-name,DC=local"
set GRUPPE=domain-name\AD-Adressbearbeitung
set RECHTE=RPWP
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;displayName;user
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;givenName;user
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;sn;user
...
leider funktioniert das so nicht. Die User in der Gruppe "AD-Adressbearbeitung" bekommen NICHT das Recht die Attribute zu schreiben.
Was muss ich am Script anpassen?
Oder wie kann ich als Mausschubser die Gruppe / alle Attributesichtbar machen und berechtigen?
MfG
Dietmar
ich möchte vom Personalbüro und/oder anderen Usern ohne Adminrecht AD-Adressdaten korrigieren lassen.
Hierzu habe ich das sehr schöne Script von Nils Kaczenski (http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbe ..) angepasst.
Die User die diese Daten mit og. Script bearbeiten werden wechseln häufiger, deshalb Rechte via Gruppenberechtigung.
Wenn ich der AD-Gruppe, in der diese User sind, AdminRechte gebe funktioniert alles. ;-(((
Ich möchte aber, dass die User der Gruppe nur auf einige definierte Attribute der AD Schreibrechte haben zB. (displayName, givenName, sn, physicalDeliveryOfficeName, department, pager ...)
1. Ich als "Mausschubser" kann leider nicht alle Attribute in den Eigenschaften der Gruppe>Sicherheit> Attribut-Editor finden.
Wie kann ich alle Attribute dort anzeigen und welche Werte müssten dann dort eingetragen werden (derzeit steht bei den Attributen die dort angezeigt werden <Nicht festgelegt>) ?
2. Aus der Not heraus habe ich versucht mich mit "dsacls" anzufreunden ... bin aber mehr als unsicher, auch, weil ich keine Testumgebung habe.
ich habe hierzu das Scriptbeispiel angepasst ...
(die OU "TEST_OU_HEN" liegt direkt unter der Domain, die Gruppe in dieser OU heißt "AD-Adressbearbeitung"
set OURoot="OU=TEST_OU_HEN,DC=domain-name,DC=local"
set GRUPPE=domain-name\AD-Adressbearbeitung
set RECHTE=RPWP
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;displayName;user
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;givenName;user
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;sn;user
...
leider funktioniert das so nicht. Die User in der Gruppe "AD-Adressbearbeitung" bekommen NICHT das Recht die Attribute zu schreiben.
Was muss ich am Script anpassen?
Oder wie kann ich als Mausschubser die Gruppe / alle Attributesichtbar machen und berechtigen?
MfG
Dietmar
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 242483
Url: https://administrator.de/forum/frage-wie-werden-einzelne-ad-attribute-zur-bearbeitung-ueber-ad-gruppe-berechtigt-242483.html
Ausgedruckt am: 22.12.2024 um 19:12 Uhr
8 Kommentare
Neuester Kommentar
Hallo Dietmar,
Stichwort: Delegation
Berechtigungen für ein Attribut eines Users setzen
Dazu passend eine Anleitung zum Erstellen einer passenden Oberfläche für die delegierten User:
Erstellen von benutzerdefinierten MMC-Konsolen für delegierte Aufgaben im Active Directory
Grüße Uwe
Stichwort: Delegation
Berechtigungen für ein Attribut eines Users setzen
Dazu passend eine Anleitung zum Erstellen einer passenden Oberfläche für die delegierten User:
Erstellen von benutzerdefinierten MMC-Konsolen für delegierte Aufgaben im Active Directory
Grüße Uwe
Zitat von @DietmarHennecke:
Übersetzungsmöglichkeiten für "Write Title" ausprobiert, hat aber leider keinerlei Auswirkungen (User in
naja ein bißchen nachdenken solltes du hier schon und nicht blind das gleiche wie in der Anleitung machen, das war nur ein Beispiel für ein einzelnes Attribut 'Titel'. Hier musst du natürlich die gewünschten zu änderbaren Attribute wählen die der Nutzer ändern können soll ...Übersetzungsmöglichkeiten für "Write Title" ausprobiert, hat aber leider keinerlei Auswirkungen (User in
Wurde die Delegation auf den richtigen Container (OU) (in dem sich die User befinden welche bearbeitet werden sollen) vorgenommen? Wurde bei der Delegation angegeben welche Objekttypen bearbeitet werden dürfen (Benutzerobjekte) ?. Wurde die AD Replication zwischen den DCs abgewartet bzw. sind alle DCs synchron ? Wenn du schon viel ausprobiert hast, hast du dir eventuell die Berechtigungen zerschossen.
Demo: delegate_control.mp4 (In der Demo werden alle Attribute freigegeben, aber das Freigeben einzelner Attribute ist genauso problemlos möglich.)
Gibt auch diverse Anleitungen dazu:
p.s. wenn Ihr einen Exchange habt reicht auch folgender Befehl Powershell-Befehl in einer EMS um die nötigen Berechtigungen für eine Gruppe auf eine OU und deren "Benutzerobjekte" festzulegen:
(Das sind alle nötigen Berechtigungen für die Standardausführung des HTA-Applets also alle Eigenschaften die Defaultmäßig angezeigt werden lassen sich dann bearbeiten)
Der entsprechende Batch-Code für dsacls lautet wie folgt:
Mit der reinen Powershell und ohne Exchange-Tools kann man sich einer meiner Funktionen behelfen (ActiveDirectory-Module Voraussetzung)
Welche sich dann wie folgt benutzen lässt
Das wurde hier an zwei Domains getestet und funktioniert einwandfrei, ansonsten habt Ihr etwas falsch konfiguriert. Was bei euch falsch läuft kann ich hier leider ohne entsprechende Infos nicht sagen.
Viel Erfolg
Grüße Uwe
p.s. eine Liste aller Attribute findest du hier: http://www.selfadsi.org/user-attributes.htm
Demo: delegate_control.mp4 (In der Demo werden alle Attribute freigegeben, aber das Freigeben einzelner Attribute ist genauso problemlos möglich.)
Gibt auch diverse Anleitungen dazu:
- Implementing Active Directory Delegation of Administration
- Active Directory rights delegation – overview
p.s. wenn Ihr einen Exchange habt reicht auch folgender Befehl Powershell-Befehl in einer EMS um die nötigen Berechtigungen für eine Gruppe auf eine OU und deren "Benutzerobjekte" festzulegen:
(Das sind alle nötigen Berechtigungen für die Standardausführung des HTA-Applets also alle Eigenschaften die Defaultmäßig angezeigt werden lassen sich dann bearbeiten)
Add-ADPermission -Identity "OU=TestOU,dc=domain,dc=local" -User GRUPPEXYZ -AccessRights WriteProperty,ReadProperty -Properties displayName,givenName,sn,company,physicalDeliveryOfficeName,department,streetAddress,postalcode,l,telephonenumber,mobile,facsimileTelephoneNumber -InheritedObjectType User -InheritanceType Descendents
Der entsprechende Batch-Code für dsacls lautet wie folgt:
@echo off & setlocal
set OURoot="OU=TEST_OU_HEN,DC=domain-name,DC=local"
set GRUPPE=domain-name\AD-Adressbearbeitung
set RECHTE=RPWP
set attributes=displayName givenName sn company physicalDeliveryOfficeName department streetAddress postalcode l telephonenumber mobile facsimileTelephoneNumber
for %%a in (%attributes%) DO @(
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;%%a;user
)
Mit der reinen Powershell und ohne Exchange-Tools kann man sich einer meiner Funktionen behelfen (ActiveDirectory-Module Voraussetzung)
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[]]$Attributes,
[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"
)
# check 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
}
# check attribute existance
$schemacontext = (Get-ADRootDSE).schemaNamingContext
# get acl of AD object
$acl = Get-ACL "AD:$ObjectDN"
foreach($attribute in $attributes){
try{
# get # get attribute GUID
$GUID_ATTRIBUTE = (Get-ADObject -SearchBase $schemacontext -Filter "ldapDisplayName -eq '$attribute' -and objectClass -eq 'attributeSchema'" -Properties schemaIDGUID).schemaIDGUID -as [guid]
if ($GUID_ATTRIBUTE -eq $null){
throw "Attribute '$attribute' could not be found."
}
# create AccesRule
$rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($Account,$AccessRights,$AccessControlType,$GUID_ATTRIBUTE,$inheritanceType,$GUID_CLASS) -EA Stop
# Add rule to acl
$acl.AddAccessRule($rule)
$rule
}catch{
write-error -Message $_.Exception.Message
}
}
# save acl to object
Set-ACL "AD:$ObjectDN" $acl
}
Delegate-ADProperty -ObjectDN 'OU=Verwaltung,DC=domain,dc=tld' -Account ([System.Security.Principal.NTAccount]"Max.Muster") -Attributes 'displayName','givenName','sn' -InheritingObjects 'user' -AccessRights "ReadProperty,WriteProperty" -InheritanceType Descendents
Das wurde hier an zwei Domains getestet und funktioniert einwandfrei, ansonsten habt Ihr etwas falsch konfiguriert. Was bei euch falsch läuft kann ich hier leider ohne entsprechende Infos nicht sagen.
Viel Erfolg
Grüße Uwe
p.s. eine Liste aller Attribute findest du hier: http://www.selfadsi.org/user-attributes.htm