Поделиться через


Формат строки дескриптора безопасности

Формат строки дескриптора безопасности — это текстовый формат для хранения или передачи информации в дескрипторе безопасности. Функции ConvertSecurityDescriptorToStringSecurityDescriptor и ConvertStringSecurityDescriptorToSecurityDescriptor используют этот формат.

Формат представляет собой строку, завершаемую значением NULL, с маркерами, чтобы указать каждый из четырех основных компонентов дескриптора безопасности: владелец (O:), первичная группа (G:), DACL (D:) и SACL (S:).

Замечание

Элементы управления доступом (ACEs) и условные ACEs имеют разные форматы. Для ACEs см. Строки 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

Строка SID, определяющая владельца объекта.

group_sid

Строка SID, идентифицирующая основную группу объекта.

dacl_flags

Флаги управления дескриптором безопасности, которые применяются к DACL. Описание этих флагов элементов управления см. в функции SetSecurityDescriptorControl . Строка dacl_flags может быть объединением нуля или более следующих строк.

Контроль Константная в Sddl.h Значение
П SDDL_PROTECTED Установлен флаг SE_DACL_PROTECTED.
Дополненная Реальность (AR) SDDL_AUTO_INHERIT_REQ Установлен флаг SE_DACL_AUTO_INHERIT_REQ.
"ИИ" SDDL_AUTO_INHERITED Установлен флаг SE_DACL_AUTO_INHERITED.
НЕТ_КОНТРОЛЯ_ДОСТУПА 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, чтобы указать компоненты, которые необходимо включить в строку дескриптора безопасности.

Формат строки дескриптора безопасности не поддерживает списки ACL NULL .

Чтобы указать пустой список ACL, строка дескриптора безопасности включает маркер 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;aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb;;AO)
(OA;;CCDC;bbbbbbbb-1111-2222-3333-cccccccccccc;;AO)
(OA;;CCDC;cccccccc-2222-3333-4444-dddddddddddd;;AO)
(OA;;CCDC;dddddddd-3333-4444-5555-eeeeeeeeeeee;;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)

Строки ACE

язык определения дескриптора безопасности для условных