Restaurer un objet supprimé de l’annuaire Active Directory

Par défaut avec Windows 2003 la valeur du « tombstone » est de 180 jours depuis le sp1.
Cela a été revu à la baisse avec la version Windows 2003 R2 à 60 jours puis re-évalué avec Windows R2 Sp2 à 180 jours.

Les objets supprimés n’apparaissent pas lors d’une consultation de l’annuaire mais sont bien présent, pour voir les objets supprimés, utiliser l’utilitaire « ldp.exe » fournit avec le « support tools », cf KB840001, et activer l’option de contrôle « Return deleted objects »

Recherche l’objet à restaurer, supprimer l’attribut « isDeleted »

Et changer la valeur de l’attribut « lastKnownParent » pour définir le nouvel emplacement de l’objet

Avec une commande Powershell

« Restore-QADDeletedObject » (cf ActiveRoles Management Shell for Active Directory by Quest)

« Restore-ADObject » fournit avec Windows 2008 R2 (fonctionnalité Active Directory module for Windows PowerShell)

Get-QADObject -Tombstone -LastKnownParent 'OU=TEST,OU=COMPTES,DC=domaine,DC=com' -name "_totox*"

Name                           Type            DN
----                           ----            --
_totox0ADEL:568a0ba2-6d2e-4... user            CN=_totox\0ADEL:568a0ba2-6d2e-4846-8215-14e3819174a6,CN=Deleted Objec...
Get-QADObject -Tombstone -LastKnownParent 'OU=TEST,OU=COMPTES,DC=domaine,DC=com' -name "_totox*" |Restore-QADDeletedObject
Name        Type    DN
 ----       ----    --
 _totox     user    CN=_totox,OU=TEST,OU=COMPTES,DC=domaine,DC=com

« Object path is not valid » avec dsacls.exe sur deleted objects

Voici une erreur que j’ai rencontré alors que je voulais modifier les permissions sur le conteneur « Deleted Objects » d’une partition de domaine Active Directory.

La commande dsacls permet d’afficher ou de modifier les permissions sur les ACL des objets de l’annuaire, cf commande dsacls sur technet, elle est disponible dans le dossier Support\Tools du cd de Windows 2003.

Pour lister les ACL du conteneur des objets supprimés « Deleted Objects », il faut utiliser la syntaxe suivante:

C:\Program Files\Support Tools>dsacls "cn=deleted objects,dc=<domain>,dc=fr"
Object path is not valid, please correct it.
The command failed to complete successfully.

Mais cela ne fonctionne pas, j’ai testé cette commande sur les environnements suivant:

  • Windows 2003 EE sp2 [FR] => KO
  • Windows 2003 EE x64 sp2 [US] => KO
  • Windows 2008 R2 sp1 [US] => OK

Sous Windows 2008 R2 sp1, voici le résultat escompté:

C:\>dsacls "cn=deleted objects,dc=<domain>,dc=fr"
Owner: <domain>\xxx
Group: AUTORITE NT\SYSTEM
Access list:
{This object is protected from inheriting permissions from the parent}
Allow <domain>\Exchange Servers    SPECIAL ACCESS
                                  LIST CONTENTS
Allow BUILTIN\Administrateurs     SPECIAL ACCESS
                                  LIST CONTENTS
                                  READ PROPERTY
Allow AUTORITE NT\SYSTEM          SPECIAL ACCESS
                                  DELETE
                                  READ PERMISSONS
                                  WRITE PERMISSIONS
                                  CHANGE OWNERSHIP
                                  CREATE CHILD
                                  DELETE CHILD
                                  LIST CONTENTS
                                  WRITE SELF
                                  WRITE PROPERTY
                                  READ PROPERTY
Permissions inherited to subobjects are:
Inherited to all subobjects
Allow <domain>\Exchange Servers    SPECIAL ACCESS
                                  LIST CONTENTS
The command completed successfully

Après quelques recherches, il s’avère que c’est la commande DSACLS fournit dans le support tools de Windows 2003 qui ne permet pas de modifier le conteneur « Deleted Objects »

SOLUTION: Installer le service pack 1 d’ADAM. Celui-ci contient une version à jour de la commande « dsacls.exe », cf KB892806, pour cela il faut télécharger le package « ADAMretailX86.exe »

Après installation, allez dans le répertoire « c:\windows\ADAM » et lancer la commande:

C:\WINDOWS\adam>dsacls "cn=Deleted Objects,dc=<domain>,dc=fr"
Owner: <domain>\xxx
Group: AUTORITE NT\SYSTEM

Access list:
{This object is protected from inheriting permissions from the parent}
Allow <domain>\Exchange Servers    SPECIAL ACCESS
                                  LIST CONTENTS
Allow BUILTIN\Administrateurs     SPECIAL ACCESS
                                  LIST CONTENTS
                                  READ PROPERTY
Allow AUTORITE NT\SYSTEM          SPECIAL ACCESS
                                  DELETE
                                  READ PERMISSONS
                                  WRITE PERMISSIONS
                                  CHANGE OWNERSHIP
                                  CREATE CHILD
                                  DELETE CHILD
                                  LIST CONTENTS
                                  WRITE SELF
                                  WRITE PROPERTY
                                  READ PROPERTY

Permissions inherited to subobjects are:
Inherited to all subobjects
Allow <domain>\Exchange Servers    SPECIAL ACCESS
                                  LIST CONTENTS

The command completed successfully

Et voilà ça fonctionne.

Comparatif des versions de dsacls.exe fournit dans les supports tools et Adam

Support tools : dsacls.exe – version du fichier5.2.3790.1830 (srv03_sp1_rtm.050324-1447)

Adam: dsacls.exe – version du fichier 1.1.3790.2075 (dnsrv_r2.051122-2350)