Порядок ACE в списке DACL
Когда процесс пытается получить доступ к защищаемому объекту, система выполняет шаги по записям управления доступом (ACE) в списке управления доступом (DACL) объекта, пока не найдет ACE, которые разрешают или запрещают запрошенный доступ. Права доступа, которые daCL предоставляет пользователю, могут отличаться в зависимости от порядка ACE в DACL. Следовательно, операционная система Windows XP определяет предпочтительный порядок для ACE в списке DACL защищаемого объекта. Предпочтительный порядок предоставляет простую платформу, которая гарантирует, что ACE с запретом в доступе фактически запрещает доступ. Дополнительные сведения об алгоритме проверки доступа в системе см. в разделе Управление доступом к объекту служб DACLs.
В Windows Server 2003 и Windows XP правильный порядок ACE осложняется внедрением объектов ACE и автоматическим наследованием.
Ниже описан предпочтительный порядок.
- Все явные ACE помещаются в группу перед всеми унаследованными ACE.
- В группе явных ACE ACE, запрещенные в доступе, помещаются перед ACE, разрешенными для доступа.
- Наследуемые ACE размещаются в порядке, в котором они наследуются. ACE, унаследованные от родительского объекта дочернего объекта, следуют сначала, а затем ACE, унаследованные от бабушки и дедушки, и т. д. вверх по дереву объектов.
- Для каждого уровня унаследованных ACE, доступ которых запрещен, помещается перед ACE, разрешенных доступом.
Конечно, в ACL требуются не все типы ACE.
Такие функции, как AddAccessAllowedAceEx и AddAccessAllowedObjectAce, добавляют ACE в конец ACL. Ответственность за добавление ACE в правильном порядке лежит на вызывающем объекте.