安全描述符字符串格式

安全描述符字符串格式是一种文本格式,用于在安全描述符中存储或传输信息。 ConvertSecurityDescriptorToStringSecurityDescriptorConvertStringSecurityDescriptorToSecurityDescriptor 函数使用此格式。

格式是一个 以 null 结尾的字符串,其标记指示安全描述符的四个主要组件中的每一个:所有者(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

标识对象的所有者的 SID 字符串

group_sid

标识对象的主要组的 SID 字符串。

DACL标志

适用于 DACL 的安全描述符控制标志。 有关这些控件标志的说明,请参阅 SetSecurityDescriptorControl 函数。 dacl_flags字符串可以是以下一个或多个字符串的拼接结果。

控制 Sddl.h 中的常量 含义
“P” SDDL_PROTECTED SE_DACL_PROTECTED标志已被设置。
“AR” SDDL_AUTO_INHERIT_REQ 设置SE_DACL_AUTO_INHERIT_REQ标志。
“AI” 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

安全描述符的 DACL 或 SACL 中,用于描述 ACE 的字符串。 有关 ACE 字符串格式的说明,请参阅 ACE 字符串。 每个 ACE 字符串都括在括号()中。

可以从安全描述符字符串中省略不需要的组件。 例如,如果未在输入安全描述符中设置SE_DACL_PRESENT标志, ConvertSecurityDescriptorToStringSecurityDescriptor 不包含输出字符串中的 D: 组件。 还可以使用 SECURITY_INFORMATION 位标志来指示要包含在安全描述符字符串中的组件。

安全描述符字符串格式不支持 NULL ACL。

若要表示空 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 字符串

条件 ACE 的安全描述符定义语言