Erstellen und Löschen von Objekten in Active Directory Domain Services

Die Prozedur zum programmgesteuerten Erstellen und Löschen von Objekten in Active Directory Domain Services hängt von der verwendeten Programmiertechnologie ab. Weitere Informationen zum Erstellen und Löschen von Objekten in Active Directory Domain Services mit einer bestimmten Programmiertechnologie finden Sie in den In der folgenden Tabelle aufgeführten Themen.

Programmiertechnik Weitere Informationen finden Sie unter
Active Directory Service Interfaces Erstellen und Löschen von Objekten
Lightweight Directory Access Protocol Ändern eines Verzeichniseintrags
System.DirectoryServices Erstellen, Löschen, Umbenennen und Verschieben von Objekten

 

Erstellen eines Objekts

Im Allgemeinen sind nur die Attribute cn und objectClass erforderlich, um ein Objekt zu erstellen. Das Erstellen eines Objekts macht es jedoch nicht unbedingt zu einem funktionalen Objekt. Bestimmte Arten von Objekten, z. B. Benutzer und Gruppen, verfügen über zusätzliche attribute, die erforderlich sind, um sie funktionsfähig zu machen. Weitere Informationen zum Erstellen bestimmter Objekttypen finden Sie unter Erstellen eines Benutzers und Erstellen von Gruppen in einer Domäne.

Windows Server 2003: Wenn ein Objekt der Benutzer-, Gruppen- oder Computerklasse auf einem Domänencontroller erstellt wird, der auf WWindows Server 2003 oder höher ausgeführt wird, legt der Domänencontroller das sAMAccountName-Attribut für das Objekt automatisch auf eine eindeutige Zeichenfolge fest, sofern keines angegeben ist.

Löschen eines Objekts

Der Active Directory-Server führt die folgenden Aktionen aus, wenn ein Objekt gelöscht wird:

  • Das attribut isDeleted des gelöschten Objekts ist auf TRUE festgelegt. Objekte mit einem isDeleted-Attributwert , der auf TRUE festgelegt ist, werden als Tombstones bezeichnet.

  • Das gelöschte Objekt wird für den Namenskontext in den Container Deleted Objects verschoben. Wenn die objekt systemFlags-Eigenschaft das flag 0x02000000 enthält, wird das Objekt nicht in den Container Deleted Objects verschoben. Weitere Informationen zum Binden und Auflisten des Inhalts des Containers "Gelöschte Objekte" finden Sie unter Abrufen gelöschter Objekte.

  • Der Container "Gelöschte Objekte" ist flach, sodass sich alle Objekte auf derselben Ebene im Container Deleted Objects befinden. Daher wird der relative distinguished Name des gelöschten Objekts geändert, um sicherzustellen, dass der Name innerhalb des Containers "Gelöschte Objekte" eindeutig ist. Wenn der ursprüngliche Name länger als 75 Zeichen ist, wird er auf 75 Zeichen gekürzt. Folgende Werden dann an den neuen Namen angefügt:

    1. Ein 0x0A Zeichen
    2. Die Zeichenfolge "DEL:"
    3. Die Zeichenfolgenform einer eindeutigen GUID, z. B. "947e3228-70c9-4311-8b7a-e5c9b5bd4432"

    Ein Beispiel für einen gelöschten Objektnamen ist:

    Jeff Smith\0ADEL:947e3228-70c9-4311-8b7a-e5c9b5bd4432
    
  • Die meisten Attributwerte für das gelöschte Objekt werden entfernt. Die folgenden Attribute werden automatisch beibehalten:

    • Attributeid
    • attributeSyntax
    • Distinguishedname
    • dNReferenceUpdate
    • flatName
    • governsID
    • groupType
    • instanceType
    • lDAPDisplayName
    • legacyExchangeDN
    • mS-DS-CreatorSID
    • mSMQOwnerID
    • name
    • Ncname
    • Objectclass
    • Objectguid
    • Objectsid
    • oMSyntax
    • proxiedObjectName
    • replPropertyMetaData
    • Samaccountname
    • securityIdentifier
    • subClassOf
    • systemFlags
    • trustAttributes
    • Trustdirection
    • trustPartner
    • trustType
    • userAccountControl
    • uSNChanged
    • uSNCreated
    • whenCreated

    Andere Attribute, die über einen searchFlags-Attributwert verfügen, der 0x00000008 enthält, werden ebenfalls beibehalten.

    Die folgenden Attributwerte werden immer aus einem gelöschten Objekt entfernt:

    • objectCategory
    • samAccountType
  • Die Sicherheitsbeschreibung des gelöschten Objekts wird beibehalten, und vererbbare Zugriffssteuerungseinträge werden nicht weitergegeben. Die Sicherheitsbeschreibung wird zum Zeitpunkt des Löschens des Objekts unverändert beibehalten.

  • Links zu und aus dem gelöschten Objekt werden gelöscht. Dies wird im Hintergrund ausgeführt, nachdem das Objekt gelöscht wurde. Wenn das gelöschte Objekt wiederhergestellt wird, bevor alle Links gelöscht werden, wird ein Fehler empfangen.

  • Wenn das Objekt auf einem Windows Server 2003-Domänencontroller gelöscht wird, wird das lastKnownParent-Attribut des gelöschten Objekts auf den distinguished Name des Containers festgelegt, in dem das Objekt beim Löschen enthalten war.

Das gelöschte Objekt verbleibt im Container "Gelöschte Objekte" für einen Zeitraum, der als Tombstone-Lebensdauer bezeichnet wird. Standardmäßig beträgt die Tombstone-Lebensdauer 60 Tage, aber dieser Wert kann vom Systemadministrator geändert werden. Nach Ablauf der Tombstone-Lebensdauer wird das Objekt endgültig aus dem Verzeichnisdienst entfernt. Um zu vermeiden, dass ein Löschvorgang fehlt, muss eine Anwendung häufiger inkrementelle Synchronisierungen als die Lebensdauer des Tombstones ausführen.

Windows Server 2003 bietet die Möglichkeit, gelöschte Objekte wiederherzustellen. Weitere Informationen zur Wiederherstellung gelöschter Objekte finden Sie unter Wiederherstellen gelöschter Objekte.

Wenn ein Element gelöscht wird, kann keines der Attribute des Objekts geändert werden. In Windows Server 2003 ist es möglich, den Sicherheitsdeskriptor (das ntSecurityDescriptor-Attribut ) für ein gelöschtes Objekt zu ändern. Dies ist, um die Wiederherstellung von Objekten zu ermöglichen, wenn die Person, die das Objekt wiederherstellen, keine Schreibberechtigungen für obligatorische Attribute hat. Um die Sicherheitsbeschreibung für ein gelöschtes Objekt zu aktualisieren, muss der Aufrufer über das Zugriffsrecht "Reanimate Tombstone" auf den Namenskontext verfügen, zusätzlich zum regulären WRITE_DAC und WRITE_OWNER Zugriff. Selbst wenn der Sicherheitsdeskriptor restriktiv ist, kann der Administrator zunächst den Besitz des Objekts übernehmen, vorausgesetzt, der Administrator verfügt über das SE_TAKE_OWNERSHIP_NAME-Recht , und dann den Sicherheitsdeskriptor ändern. Verwenden Sie hierzu die ldap_modify_ext_s-Funktion mit dem LDAP_SERVER_SHOW_DELETED_OID-Steuerelement . Die Änderungsliste muss ein einzelnes Attribut für das attribut ntSecurityDescriptor enthalten.