Udostępnij przez


Format ciągu deskryptora zabezpieczeń

Format ciągu deskryptora zabezpieczeń jest formatem tekstowym do przechowywania lub transportu informacji w deskryptorze zabezpieczeń. Funkcje ConvertSecurityDescriptorToStringSecurityDescriptor i ConvertStringSecurityDescriptorToSecurityDescriptor używają tego formatu.

Format jest ciągiem o wartości null-terminated z tokenami wskazującymi każdy z czterech głównych składników deskryptora zabezpieczeń: owner (O:), podstawowej grupy (G:), DACL (D:) i SACL (S:).

Notatka

Wpisy kontroli dostępu (ACE) i warunkowe ACE mają różne formaty. Aby uzyskać informacje na temat ACE, zobacz ciągi ACE. Aby uzyskać informacje na temat warunkowych kontroli dostępu, zobacz Security Descriptor Definition Language for Conditional ACEs.

Składniki formatu ciągu deskryptora zabezpieczeń

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

Ciąg SID , który identyfikuje właściciela obiektu.

group_sid

Ciąg SID identyfikujący grupę podstawową obiektu.

dacl_flags

Flagi kontrolne deskryptora zabezpieczeń, które mają zastosowanie do DACL. Aby uzyskać opis tych flag kontrolek, zobacz funkcję SetSecurityDescriptorControl. Ciąg dacl_flags może być łączeniem zera lub więcej z następujących ciągów.

Kontrola Stała w pliku Sddl.h Znaczenie
"P" SDDL_PROTECTED Ustawiono flagę SE_DACL_PROTECTED.
Rzeczywistość rozszerzona SDDL_AUTO_INHERIT_REQ Ustawiono flagę SE_DACL_AUTO_INHERIT_REQ.
"Sztuczna inteligencja" SDDL_AUTO_INHERITED Ustawiono flagę SE_DACL_AUTO_INHERITED.
BRAK_KONTROLI_DOSTĘPU SDDL_NULL_ACL ACL jest nullem. Windows Server 2008, Windows Vista i Windows Server 2003: niedostępne.

sacl_flags

Flagi kontrolne deskryptora zabezpieczeń, które mają zastosowanie do SACL. Ciąg sacl_flags używa tych samych ciągów bitów sterujących co ciąg dacl_flags.

string_ace

Ciąg opisujący ACE w DACL lub SACL deskryptora zabezpieczeń. Aby uzyskać opis formatu ciągu ACE, zobacz ciągi ACE. Każdy ciąg ACE jest ujęty w nawiasy (()).

Niepotrzebne składniki można pominąć z ciągu deskryptora zabezpieczeń. Na przykład, jeśli flaga SE_DACL_PRESENT nie jest ustawiona w deskryptorze zabezpieczeń wejściowych, ConvertSecurityDescriptorToStringSecurityDescriptor nie zawiera w ciągu wyjściowym składnika D:. Możesz również użyć flag bitowych SECURITY_INFORMATION, aby wskazać składniki do uwzględnienia w ciągu deskryptora zabezpieczeń.

Format ciągu deskryptora zabezpieczeń nie obsługuje listy ACL typu NULL .

Aby oznaczyć pusty ACL, ciąg znaków deskryptora zabezpieczeń zawiera token D: lub S: bez dodatkowych informacji tekstowych.

Ciąg deskryptora zabezpieczeń przechowuje bity KONTROLI DESKRYPTORA ZABEZPIECZEŃ na różne sposoby. Bity SE_DACL_PRESENT lub SE_SACL_PRESENT są wskazywane przez obecność tokenu D: lub S: w ciągu. Inne bity, które mają zastosowanie do listy kontroli dostępu DACL lub SACL, są przechowywane w dacl_flags i sacl_flags. Bity SE_OWNER_DEFAULTED, SE_GROUP_DEFAULTED, SE_DACL_DEFAULTED i SE_SACL_DEFAULTED nie są przechowywane w tekście deskryptora zabezpieczeń. Bit SE_SELF_RELATIVE nie jest przechowywany w ciągu, ale funkcja ConvertStringSecurityDescriptorToSecurityDescriptor zawsze ustawia ten bit w wynikowym deskryptorze zabezpieczeń.

Przykładowe ciągi deskryptora zabezpieczeń

W poniższych przykładach przedstawiono ciągi deskryptora zabezpieczeń i informacje w skojarzonych deskryptorach zabezpieczeń.

Ciąg 1:

"O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)"

Deskryptor zabezpieczeń 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

Ciąg 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)"

Deskryptor zabezpieczeń 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)

ciągi ACE

język definicji deskryptora zabezpieczeń dla warunkowych ACEs