Creazione ed eliminazione di oggetti nei servizi di Dominio di Active Directory

La procedura utilizzata per creare ed eliminare oggetti a livello di codice in Dominio di Active Directory Services dipende dalla tecnologia di programmazione usata. Per altre informazioni sulla creazione e l'eliminazione di oggetti in Dominio di Active Directory Services con una tecnologia di programmazione specifica, vedere gli argomenti elencati nella tabella seguente.

Tecnologia di programmazione Ulteriori informazioni
Interfacce di servizio Active Directory Creazione ed eliminazione di oggetti
Lightweight Directory Access Protocol Modifica di una voce di directory
System.DirectoryServices Creare, eliminare, rinominare e spostare oggetti

 

Creazione di un oggetto

In generale, gli unici attributi necessari per creare un oggetto sono gli attributi cn e objectClass . La creazione di un oggetto non comporta tuttavia necessariamente un oggetto funzionale. Alcuni tipi di oggetti, ad esempio utenti e gruppi, hanno attributi aggiuntivi necessari per renderli funzionali. Per altre informazioni sulla creazione di tipi specifici di oggetti, vedere Creazione di un utente e Creazione di gruppi in un dominio.

Windows Server 2003: quando un oggetto della classe utente, gruppo o computer viene creato in un controller di dominio in esecuzione in WWindows Server 2003 o versione successiva, il controller di dominio imposta automaticamente l'attributo sAMAccountName per l'oggetto su una stringa univoca, se non ne viene specificata una.

Eliminazione di un oggetto

Quando un oggetto viene eliminato, il server Active Directory esegue le azioni seguenti:

  • L'attributo isDeleted dell'oggetto eliminato è impostato su TRUE. Gli oggetti con un valore dell'attributo isDeleted impostato su TRUE vengono chiamati tombstone.

  • L'oggetto eliminato viene spostato nel contenitore Oggetti eliminati per il contesto di denominazione. Se la proprietà SystemFlags dell'oggetto contiene il flag 0x02000000, l'oggetto non viene spostato nel contenitore Oggetti eliminati. Per altre informazioni sull'associazione a ed enumerazione del contenuto del contenitore Oggetti eliminati, vedere Recupero di oggetti eliminati.

  • Il contenitore Oggetti eliminati è flat, quindi tutti gli oggetti risiedono allo stesso livello all'interno del contenitore Oggetti eliminati. Di conseguenza, il nome distinto relativo dell'oggetto eliminato viene modificato per garantire che il nome sia univoco all'interno del contenitore Oggetti eliminati. Se il nome originale è più lungo di 75 caratteri, viene troncato a 75 caratteri. Di seguito viene aggiunto il nuovo nome:

    1. Carattere 0x0A
    2. Stringa "DEL:"
    3. Forma stringa di un GUID univoco, ad esempio "947e3228-70c9-4311-8b7a-e5c9b5bd4432"

    Un esempio di nome di oggetto eliminato è:

    Jeff Smith\0ADEL:947e3228-70c9-4311-8b7a-e5c9b5bd4432
    
  • La maggior parte dei valori di attributo per l'oggetto eliminato viene rimossa. Gli attributi seguenti vengono mantenuti automaticamente:

    • 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

    Vengono mantenuti anche altri attributi con valore dell'attributo searchFlags che contiene 0x00000008.

    I valori di attributo seguenti vengono sempre rimossi da un oggetto eliminato:

    • objectCategory
    • samAccountType
  • Il descrittore di sicurezza dell'oggetto eliminato viene mantenuto e le voci di controllo di accesso ereditabili non vengono propagate. Il descrittore di sicurezza viene mantenuto così come è al momento dell'eliminazione dell'oggetto.

  • I collegamenti da e verso l'oggetto eliminato vengono cancellati. Questa operazione viene eseguita in background dopo l'eliminazione dell'oggetto. Se l'oggetto eliminato viene ripristinato prima che tutti i collegamenti vengano cancellati, verrà ricevuto un errore.

  • Se l'oggetto viene eliminato in un controller di dominio di Windows Server 2003, l'attributo lastKnownParent dell'oggetto eliminato viene impostato sul nome distinto del contenitore in cui era contenuto l'oggetto quando è stato eliminato.

L'oggetto eliminato rimane nel contenitore Oggetti eliminati per un periodo di tempo noto come durata della rimozione definitiva. Per impostazione predefinita, la durata della rimozione definitiva è di 60 giorni, ma questo valore può essere modificato dall'amministratore di sistema. Dopo la scadenza della durata della rimozione definitiva, l'oggetto viene rimosso definitivamente dal servizio directory. Per evitare la mancanza di un'operazione di eliminazione, un'applicazione deve eseguire sincronizzazioni incrementali più frequentemente rispetto alla durata della rimozione definitiva.

Windows Server 2003 aggiunge la possibilità di ripristinare gli oggetti eliminati. Per altre informazioni sul ripristino di oggetti eliminati, vedere Ripristino di oggetti eliminati.

Quando un elemento viene eliminato, nessuno degli attributi dell'oggetto può essere modificato. In Windows Server 2003 è possibile modificare il descrittore di sicurezza (attributo ntSecurityDescriptor ) in un oggetto eliminato. Ciò consente il ripristino degli oggetti quando la persona che ripristina l'oggetto non dispone delle autorizzazioni di scrittura per gli attributi obbligatori. Per aggiornare il descrittore di sicurezza in un oggetto eliminato, il chiamante deve disporre del diritto di accesso di controllo "Rianimate Tombstone" nel contesto di denominazione, oltre all'accesso regolare WRITE_DAC e WRITE_OWNER . Anche se il descrittore di sicurezza è restrittivo, l'amministratore può prima assumere la proprietà dell'oggetto, presupponendo che l'amministratore abbia il privilegio edizione Standard_TAKE_OWNERSHIP_NAME e quindi modificare il descrittore di sicurezza. A tale scopo, usare la funzione ldap_modify_ext_s con il controllo LDAP_edizione StandardRVER_SHOW_DELETED_OID. L'elenco di modifiche deve contenere un singolo attributo sostitutivo per l'attributo ntSecurityDescriptor .