Orden de las ACE en una DACL

Cuando un proceso intenta acceder a un objeto protegible, el sistema recorre las entradas de control de acceso (ACE) de la lista de control de acceso discrecional (DACL) del objeto hasta que encuentra ACL que permiten o deniegan el acceso solicitado. Los derechos de acceso que una DACL permite a un usuario pueden variar en función del orden de las ACE en la DACL. Por lo tanto, el sistema operativo Windows XP define un orden preferido para las ACE en la DACL de un objeto protegible. El orden preferido proporciona un marco sencillo que garantiza que una ACE de acceso denegada realmente deniega el acceso. Para obtener más información sobre el algoritmo del sistema para comprobar el acceso, vea Cómo controlan el acceso DACL a un objeto.

Para Windows Server 2003 y Windows XP, el orden adecuado de los ACE es complicado por la introducción de ace específicas del objeto y la herencia automática.

En los pasos siguientes se describe el orden preferido:

  1. Todos los ACE explícitos se colocan en un grupo antes de cualquier ACE heredada.
  2. Dentro del grupo de ACE explícitas, los ACE denegados de acceso se colocan antes de las ACE permitidas por el acceso.
  3. Las ACE heredadas se colocan en el orden en que se heredan. Los ACL heredados del elemento primario del objeto secundario vienen primero, luego los ASE heredados del abuelo, etc. el árbol de objetos.
  4. Para cada nivel de ACE heredadas, las ACE de acceso denegadas se colocan antes de las ACE permitidas por el acceso.

Por supuesto, no todos los tipos ace son necesarios en una ACL.

Funciones como AddAccessAllowedAceEx y AddAccessAllowedObjectAce agregan una ACE al final de una ACL. Es responsabilidad del autor de la llamada asegurarse de que las ACE se agregan en el orden adecuado.