Наследование управления доступом

Записи управления доступом (ACEs) в списке управления доступом объектов (ACL) могут принадлежать одной из двух категорий:

  • Действующий ACL: acEs в этой категории применяются к объекту.
  • Наследование ACL: ACEs в этой категории наследуются объектами, созданными в контейнере.

Каждый ACE в DACL может принадлежать к одной или нескольким категориям. Категории, для которых принадлежит ACE, определяются флагами элемента управления наследования, заданными в ACE.

Три флага управления наследования можно задать в AceFlags свойстве ACE.

Флаг Описание
ADS_ACEFLAG_INHERIT_ACE Этот флаг указывает, что ACE является частью наследуемого списка ACL и что дочерние объекты наследуют флаги управления наследованием этого ACE.
ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE Этот флаг указывает, что ACE является частью наследуемого списка ACL, но флаги управления наследованием не распространяется на прямые дочерние объекты (прямые потомки), а ACE действует на прямых дочерних объектах.
ADS_ACEFLAG_INHERIT_ONLY_ACE Этот флаг указывает, что ACE не является частью эффективного ACL. Если этот флаг не задан, то ACE является частью эффективного ACL. Этот флаг полезен для настройки разрешений, наследуемых вложенными объектами, но не влияет на специальные возможности контейнера. Например, если ACE наследуется объектами пользователей в подразделении, скорее всего, он не должен применяться для доступа к самому подразделению организации.

Флаги ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE и ADS_ACEFLAG_INHERIT_ONLY_ACE имеют смысл только в том случае, если ADS_ACEFLAG_INHERIT_ACE присутствует. Это связано с тем, что флаг ADS_ACEFLAG_INHERIT_ACE добавляет поведение наследования к наследуемому ACE, но не определяет тип наследования. Флаги ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE и ADS_ACEFLAG_INHERIT_ONLY_ACE определяют определенный тип поведения наследования.

Важно помнить, что система также задает следующие флаги на основе типа и состояния ACE.

Флаг Описание
ADS_ACEFLAG_INHERITED_ACE Этот флаг указывает, что ACE наследуется.
ADS_ACEFLAG_VALID_INHERIT_FLAGS Этот флаг указывает, что флаги наследования допустимы.

В следующей таблице перечислены эффекты различных сочетаний флагов для свойства ACE AceFlags.

Флаг Влияние на объект, содержащий ACE Влияние на прямые дочерние объекты Влияние на объекты под прямыми дочерними объектами
Флаги не заданы. Действующий ACE: ACE применяется к объекту. ACE не наследуется. ACE не наследуется.
ADS_ACEFLAG_INHERIT_ACE Эффективный ACE ACE наследуется. ACE является эффективным ACE.
ACE наследуется. ACE является эффективным ACE.
| ADS_ACEFLAG_INHERIT_ACEADS_ACEFLAG_INHERIT_ONLY_ACE Не действующий ACE: ACE не применяется к объекту. ACE наследуется. ACE является эффективным ACE.
ACE наследуется. ACE является эффективным ACE.
| ADS_ACEFLAG_INHERIT_ACEADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE Эффективный ACE ACE наследуется, но без флагов наследования. ACE является эффективным ACE
ACE не наследуется.
| ADS_ACEFLAG_INHERIT_ACE | ADS_ACEFLAG_INHERIT_ONLY_ACEADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE Не эффективный ACE. ACE наследуется, но без флагов наследования. ACE — это эффективный ACE.
ACE не наследуется.