安全描述符字符串格式
是一种文本格式,用于在安全描述符中存储或传输信息。
ConvertSecurityDescriptorToStringSecurityDescriptor
和
ConvertStringSecurityDescriptorToSecurityDescriptor
函数使用此格式。
格式是一个
以 null
结尾的字符串,其中包含标记,用于指示安全描述符的四个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
标识对象的所有者的 SID 字符串 。
group_sid
标识对象的主组的 SID 字符串。
dacl_flags
应用于 DACL 的安全描述符控件标志。 有关这些控件标志的说明,请参阅 SetSecurityDescriptorControl 函数。 dacl_flags字符串可以是以下字符串的零个或多个串联。
Sddl.h 中的常量
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)
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)
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)
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)
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 的安全描述符定义语言