Les autorisations héritées ne sont pas automatiquement mises à jour lorsque vous déplacez des dossiers

Cet article fournit une solution à un problème où les autorisations héritées ne sont pas automatiquement mises à jour lorsque vous déplacez des dossiers.

S’applique à : Windows Server 2012 R2
Numéro de la base de connaissances d’origine : 320246

Symptômes

Une liste de Access Control (ACL) peut afficher des autorisations marquées comme héritées du parent, mais le parent lui-même n’a peut-être pas ces autorisations configurées dans sa liste de contrôle d’accès. Ce symptôme peut se produire même si l’héritage est toujours activé. Toute modification ultérieure apportée à l’ACL du dossier parent entraîne la réception des autorisations héritées par l’ACL de l’enfant. En outre, toute tentative de modification de la liste de contrôle d’accès de l’enfant entraîne l’application de l’héritage (sauf si la modification marque l’ACL comme protégée contre l’héritage). Ce comportement peut être surprenant si l’état d’héritage n’avait pas été noté avant de commencer à modifier la liste de contrôle d’accès.

Remarque

Ce comportement ne peut pas être dû au déplacement d’un dossier lorsque vous exécutez un ordinateur Windows Vista. L’opération de déplacement fonctionne maintenant, car le dossier ou le fichier peut hériter de la liste de contrôle d’accès du dossier ou fichier cible. Le dossier ou le fichier dispose également d’autorisations marquées comme ayant été héritées du parent. Il s’agit d’un changement par conception de Windows XP vers Windows Vista et Windows Server 2008.

Cause

Ce comportement peut être dû au déplacement d’un dossier. Lorsque vous déplacez un dossier, l’ACL n’est pas modifiée et les autorisations héritées ne sont pas mises à jour. Notez que déplacer dans le contexte de cet article signifie toujours se déplacer dans le même volume.

Lorsque vous déplacez un fichier ou un dossier, la liste de contrôle d’accès est également déplacée et n’est pas modifiée d’une manière ou d’une autre. Même lorsque l’héritage est activé pour ce dossier, les autorisations héritées ne sont pas automatiquement mises à jour. La liste de contrôle d’accès sera mise à jour la prochaine fois que vous modifierez les autorisations, ce qui force le parent à propager ses autorisations.

Ce comportement peut également être dû aux causes suivantes :

  • La définition des autorisations d’un dossier parent à l’aide de LACLS ne se propage pas aux sous-dossiers. L’option /T ne signifie pas pour propager les droits à l’aide de l’héritage, mais pour remplacer toutes les listes de contrôle d’accès.

  • Définition des autorisations d’un dossier parent à l’aide d’une API qui ne propage pas automatiquement l’héritage (comme Adssecurity.dll).

  • Restauration à partir d’une sauvegarde vers un autre emplacement.

Résolution

Pour éviter les modifications inattendues des autorisations, définissez la liste de contrôle d’accès du fichier/dossier sur Protégée avant de le déplacer lorsque vous souhaitez conserver les paramètres. Sinon, mettez à jour manuellement la liste de contrôle d’accès du fichier/dossier déplacé à l’aide de l’éditeur de liste de contrôle d’accès de l’explorateur. Désactivez, puis réactivez l’héritage pour forcer la mise à jour de la liste de contrôle d’accès avec les autorisations héritées appropriées. Vous pouvez également utiliser un code VBScript pour automatiser ce processus.

Statut

Ce comportement est inhérent au produit. Ce comportement ne se produit pas en raison de la modification de la conception dans Windows Vista.

Procédures pour reproduire le problème

  1. Créez un dossier test1 avec les autorisations everyone :read et users :change .
  2. Créez un sous-dossier test1\sub et activez l’héritage du parent (par défaut). Ce dossier doit indiquer everyone :read et users :change comme autorisations héritées.
  3. Créez un autre dossier test2 avec uniquement les autorisations administrateurs :contrôle total .
  4. Déplacez le sous-dossier vers test2.
  5. Affichez les autorisations sur test2\sub pour voir everyone :read et users :change comme autorisations héritées bien que l’autorisation parente soit administrateurs :contrôle total.
  6. Ajoutez un autre groupe/utilisateur (tel que l’invité) à la liste de contrôle d’accès de sous-octroi, par exemple, accès en lecture à l’aide de l’éditeur de liste de contrôle d’accès de l’explorateur. Une fois que vous avez cliqué sur Appliquer, everyone :read et users :change sont supprimés, et seuls administrateurs :contrôle total sont affichés en tant qu’autorisations héritées en regard de celle que vous venez d’ajouter.