Структура ACL (wdm.h)

Структура ACL является заголовком списка управления доступом (ACL). Полный ACL состоит из структуры ACL, за которой следует упорядоченный список из нуля или нескольких записей управления доступом (ACE).

Синтаксис

typedef struct _ACL {
  UCHAR  AclRevision;
  UCHAR  Sbz1;
  USHORT AclSize;
  USHORT AceCount;
  USHORT Sbz2;
} ACL;

Члены

AclRevision

Уровень редакции ACL.

Microsoft Windows NT 4.0 и более ранних версий: это значение должно быть ACL_REVISION.

Microsoft Windows 2000 и более поздних версий: Это значение может быть ACL_REVISION или ACL_REVISION_DS. Он должен быть ACL_REVISION_DS, если ACL содержит ACE для конкретного объекта.

Sbz1

Нулевой байт заполнения, который выравнивает элемент AclRevision по 16-разрядной границе.

AclSize

Размер ACL в байтах. Это значение включает как структуру ACL, так и все ACE.

AceCount

Количество ACE, хранящихся в списке ACL.

Sbz2

Два нулевых байта заполнения, которые выравнивают структуру ACL по 32-разрядной границе.

Комментарии

ACL включает последовательный список из нуля или нескольких ACE. Отдельные ACE в списке ACL нумеруются от 0 до n, где n+1 — количество ACE в списке ACL. При редактировании ACL драйвер ссылается на ACE в ACL по его индексу.

Существует два типа ACL: дискреционный и системный.

Дискреционный ACL (DACL) контролируется владельцем объекта или любым лицом, которому предоставляется WRITE_DAC доступ к объекту. Он указывает доступ конкретных пользователей и групп к объекту. Например, владелец файла может использовать DACL для управления тем, какие пользователи и группы могут и не могут иметь доступ к файлу.

Объект также может иметь связанные с ним сведения о безопасности на уровне системы в виде системного ACL (SACL), управляемого системным администратором. SACL может позволить системным администраторам проводить аудит любых попыток получения доступа к объекту.

В настоящее время определены три структуры ACE:

attribute Описание
ACCESS_ALLOWED_ACE Предоставляет пользователю или группе указанные права. Этот ACE хранится в DACL.
ACCESS_DENIED_ACE Запрещает указанные права пользователю или группе. Этот ACE хранится в DACL.
SYSTEM_AUDIT_ACE Указывает, какие типы доступа будут вызывать аудиты на уровне системы. Этот ACE хранится в saCL.
 

Четвертая структура ACE, SYSTEM_ALARM_ACE, в настоящее время не поддерживается.

Структура ACL должна рассматриваться как непрозрачная, и драйверы не должны пытаться работать с ее членами напрямую. Чтобы обеспечить семантическую правильность списков управления доступом, драйверы могут использовать функции, перечисленные в разделе См. также, для создания списков управления доступом и управления ими.

Структуры ACL и ACE должны быть выровнены по 32-разрядным границам.

Требования

Требование Значение
Заголовок wdm.h (включая Wdm.h)

См. также раздел

ACCESS_ALLOWED_ACE

ACCESS_DENIED_ACE

ACE

RtlAddAccessAllowedAce

RtlCreateAcl

RtlGetAce

RtlSetDaclSecurityDescriptor

SYSTEM_ALARM_ACE

SYSTEM_AUDIT_ACE

TOKEN_DEFAULT_DACL