Формат строки дескриптора безопасности
Формат строки дескриптора безопасности — это текстовый формат для хранения или передачи информации в дескрипторе безопасности. Функции ConvertSecurityDescriptorToStringSecurityDescriptor и ConvertStringSecurityDescriptorToSecurityDescriptor используют этот формат.
Формат представляет собой строку, завершаемую нулевым значением, с маркерами, указывающими каждый из четырех компонентов main дескриптора безопасности: владелец (O:), основная группа (G:), DACL (D:) и SACL (S:).
Примечание
Записи управления доступом (ACE) и условные ACE имеют разные форматы. Сведения об ACE см. в разделе Строки ACE. Условные ACE см. в разделе Язык определения дескриптора безопасности для условных ACE.
O:owner_sid
G:group_sid
D:dacl_flags(string_ace1)(string_ace2)... (string_acen)
S:sacl_flags(string_ace1)(string_ace2)... (string_acen)
-
owner_sid
-
Строка идентификатора безопасности, идентифицирующая владельца объекта.
-
group_sid
-
Строка идентификатора безопасности, идентифицирующая основную группу объекта.
-
dacl_flags
-
Флаги элементов управления дескриптором безопасности, которые применяются к DACL. Описание этих флагов элемента управления см. в разделе Функция SetSecurityDescriptorControl . Строка dacl_flags может быть объединением из нуля или более следующих строк.
Control Константы в Sddl.h Значение "P" SDDL_PROTECTED Установлен флаг SE_DACL_PROTECTED. "AR" SDDL_AUTO_INHERIT_REQ Установлен флаг SE_DACL_AUTO_INHERIT_REQ. "ИИ" SDDL_AUTO_INHERITED Установлен флаг SE_DACL_AUTO_INHERITED. "NO_ACCESS_CONTROL" SDDL_NULL_ACL ACL имеет значение NULL. Windows Server 2008, Windows Vista и Windows Server 2003: Недоступно. -
sacl_flags
-
Флаги элементов управления дескриптором безопасности, которые применяются к SACL. Строка sacl_flags использует те же строки битов элемента управления, что и строка dacl_flags.
-
string_ace
-
Строка, описывающая ACE в dacl или SACL дескриптора безопасности. Описание формата строки ACE см. в разделе Строки ACE. Каждая строка ACE заключена в круглые скобки (()).
Ненужные компоненты можно опустить в строке дескриптора безопасности. Например, если флаг SE_DACL_PRESENT не задан во входном дескрипторове безопасности, convertSecurityDescriptorToStringSecurityDescriptor не включает компонент D: в выходную строку. Можно также использовать SECURITY_INFORMATION битовые флаги, чтобы указать компоненты, которые необходимо включить в строку дескриптора безопасности.
Формат строки дескриптора безопасности не поддерживает списки управления доступом со значением NULL .
Чтобы обозначить пустой список управления доступом, строка дескриптора безопасности содержит токен D: или S: без дополнительных сведений о строке.
В строке дескриптора безопасности биты SECURITY DESCRIPTOR CONTROL хранятся разными способами. Биты SE_DACL_PRESENT или SE_SACL_PRESENT указываются наличием маркера D: или S: в строке. Другие биты, которые применяются к DACL или SACL, хранятся в dacl_flags и sacl_flags. Биты SE_OWNER_DEFAULTED, SE_GROUP_DEFAULTED, SE_DACL_DEFAULTED и SE_SACL_DEFAULTED не хранятся в строке дескриптора безопасности. Бит SE_SELF_RELATIVE не хранится в строке, но ConvertStringSecurityDescriptorToSecurityDescriptor всегда задает этот бит в дескрипторе безопасности вывода.
В следующих примерах показаны строки дескриптора безопасности и сведения в связанных дескрипторов безопасности.
Строка 1:
"O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)"
Дескриптор безопасности 1:
Revision: 0x00000001
Control: 0x0004
SE_DACL_PRESENT
Owner: (S-1-5-32-548)
PrimaryGroup: (S-1-5-21-397955417-626881126-188441444-512)
DACL
Revision: 0x02
Size: 0x001c
AceCount: 0x0001
Ace[00]
AceType: 0x00 (ACCESS_ALLOWED_ACE_TYPE)
AceSize: 0x0014
InheritFlags: 0x00
Access Mask: 0x100e003f
READ_CONTROL
WRITE_DAC
WRITE_OWNER
GENERIC_ALL
Others(0x0000003f)
Ace Sid : (S-1-0-0)
SACL
Not present
Строка 2:
"O:DAG:DAD:(A;;RPWPCCDCLCRCWOWDSDSW;;;SY)
(A;;RPWPCCDCLCRCWOWDSDSW;;;DA)
(OA;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)
(OA;;CCDC;bf967a9c-0de6-11d0-a285-00aa003049e2;;AO)
(OA;;CCDC;6da8a4ff-0e52-11d0-a286-00aa003049e2;;AO)
(OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)
(A;;RPLCRC;;;AU)S:(AU;SAFA;WDWOSDWPCCDCSW;;;WD)"
Дескриптор безопасности 2:
Revision: 0x00000001
Control: 0x0014
SE_DACL_PRESENT
SE_SACL_PRESENT
Owner: (S-1-5-21-397955417-626881126-188441444-512)
PrimaryGroup: (S-1-5-21-397955417-626881126-188441444-512)
DACL
Revision: 0x04
Size: 0x0104
AceCount: 0x0007
Ace[00]
AceType: 0x00 (ACCESS_ALLOWED_ACE_TYPE)
AceSize: 0x0014
InheritFlags: 0x00
Access Mask: 0x000f003f
DELETE
READ_CONTROL
WRITE_DAC
WRITE_OWNER
Others(0x0000003f)
Ace Sid: (S-1-5-18)
Ace[01]
AceType: 0x00 (ACCESS_ALLOWED_ACE_TYPE)
AceSize: 0x0024
InheritFlags: 0x00
Access Mask: 0x000f003f
DELETE
READ_CONTROL
WRITE_DAC
WRITE_OWNER
Others(0x0000003f)
Ace Sid: (S-1-5-21-397955417-626881126-188441444-512)
Ace[02]
AceType: 0x05 (ACCESS_ALLOWED_OBJECT_ACE_TYPE)
AceSize: 0x002c
InheritFlags: 0x00
Access Mask: 0x00000003
Others(0x00000003)
Flags: 0x00000001, ACE_OBJECT_TYPE_PRESENT
ObjectType: GUID_C_USER
InhObjectType: GUID ptr is NULL
Ace Sid: (S-1-5-32-548)
Ace[03]
AceType: 0x05 (ACCESS_ALLOWED_OBJECT_ACE_TYPE)
AceSize: 0x002c
InheritFlags: 0x00
Access Mask: 0x00000003
Others(0x00000003)
Flags: 0x00000001, ACE_OBJECT_TYPE_PRESENT
ObjectType: GUID_C_GROUP
InhObjectType: GUID ptr is NULL
Ace Sid: (S-1-5-32-548)
Ace[04]
AceType: 0x05 (ACCESS_ALLOWED_OBJECT_ACE_TYPE)
AceSize: 0x002c
InheritFlags: 0x00
Access Mask: 0x00000003
Others(0x00000003)
Flags: 0x00000001, ACE_OBJECT_TYPE_PRESENT
ObjectType: GUID_C_LOCALGROUP
InhObjectType: GUID ptr is NULL
Ace Sid: (S-1-5-32-548)
Ace[05]
AceType: 0x05 (ACCESS_ALLOWED_OBJECT_ACE_TYPE)
AceSize: 0x002c
InheritFlags: 0x00
Access Mask: 0x00000003
Others(0x00000003)
Flags: 0x00000001, ACE_OBJECT_TYPE_PRESENT
ObjectType: GUID_C_PRINT_QUEUE
InhObjectType: GUID ptr is NULL
Ace Sid: (S-1-5-32-550)
Ace[06]
AceType: 0x00 (ACCESS_ALLOWED_ACE_TYPE)
AceSize: 0x0014
InheritFlags: 0x00
Access Mask: 0x00020014
READ_CONTROL
Others(0x00000014)
Ace Sid: (S-1-5-11)
SACL
Revision: 0x02
Size: 0x001c
AceCount: 0x0001
Ace[00]
AceType: 0x02 (SYSTEM_AUDIT_ACE_TYPE)
AceSize: 0x0014
InheritFlags: 0xc0
SUCCESSFUL_ACCESS_ACE_FLAG
FAILED_ACCESS_ACE_FLAG
Access Mask: 0x000d002b
DELETE
WRITE_DAC
WRITE_OWNER
Others(0x0000002b)
Ace Sid: (S-1-1-0)
Связанные темы