📄 layout.h
字号:
SECURITY_ENTERPRISE_CONTROLLERS_RID=9, SECURITY_SERVER_LOGON_RID = 9, SECURITY_PRINCIPAL_SELF_RID = 0xa, SECURITY_AUTHENTICATED_USER_RID = 0xb, SECURITY_RESTRICTED_CODE_RID = 0xc, SECURITY_TERMINAL_SERVER_RID = 0xd, SECURITY_LOGON_IDS_RID = 5, SECURITY_LOGON_IDS_RID_COUNT = 3, SECURITY_LOCAL_SYSTEM_RID = 0x12, SECURITY_NT_NON_UNIQUE = 0x15, SECURITY_BUILTIN_DOMAIN_RID = 0x20, /* * Well-known domain relative sub-authority values (RIDs). */ /* Users. */ DOMAIN_USER_RID_ADMIN = 0x1f4, DOMAIN_USER_RID_GUEST = 0x1f5, DOMAIN_USER_RID_KRBTGT = 0x1f6, /* Groups. */ DOMAIN_GROUP_RID_ADMINS = 0x200, DOMAIN_GROUP_RID_USERS = 0x201, DOMAIN_GROUP_RID_GUESTS = 0x202, DOMAIN_GROUP_RID_COMPUTERS = 0x203, DOMAIN_GROUP_RID_CONTROLLERS = 0x204, DOMAIN_GROUP_RID_CERT_ADMINS = 0x205, DOMAIN_GROUP_RID_SCHEMA_ADMINS = 0x206, DOMAIN_GROUP_RID_ENTERPRISE_ADMINS= 0x207, DOMAIN_GROUP_RID_POLICY_ADMINS = 0x208, /* Aliases. */ DOMAIN_ALIAS_RID_ADMINS = 0x220, DOMAIN_ALIAS_RID_USERS = 0x221, DOMAIN_ALIAS_RID_GUESTS = 0x222, DOMAIN_ALIAS_RID_POWER_USERS = 0x223, DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224, DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225, DOMAIN_ALIAS_RID_PRINT_OPS = 0x226, DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227, DOMAIN_ALIAS_RID_REPLICATOR = 0x228, DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229, DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a,} RELATIVE_IDENTIFIERS;/* * The universal well-known SIDs: * * NULL_SID S-1-0-0 * WORLD_SID S-1-1-0 * LOCAL_SID S-1-2-0 * CREATOR_OWNER_SID S-1-3-0 * CREATOR_GROUP_SID S-1-3-1 * CREATOR_OWNER_SERVER_SID S-1-3-2 * CREATOR_GROUP_SERVER_SID S-1-3-3 * * (Non-unique IDs) S-1-4 * * NT well-known SIDs: * * NT_AUTHORITY_SID S-1-5 * DIALUP_SID S-1-5-1 * * NETWORD_SID S-1-5-2 * BATCH_SID S-1-5-3 * INTERACTIVE_SID S-1-5-4 * SERVICE_SID S-1-5-6 * ANONYMOUS_LOGON_SID S-1-5-7 (aka null logon session) * PROXY_SID S-1-5-8 * SERVER_LOGON_SID S-1-5-9 (aka domain controller account) * SELF_SID S-1-5-10 (self RID) * AUTHENTICATED_USER_SID S-1-5-11 * RESTRICTED_CODE_SID S-1-5-12 (running restricted code) * TERMINAL_SERVER_SID S-1-5-13 (running on terminal server) * * (Logon IDs) S-1-5-5-X-Y * * (NT non-unique IDs) S-1-5-0x15-... * * (Built-in domain) S-1-5-0x20 *//** * union SID_IDENTIFIER_AUTHORITY - A 48-bit value used in the SID structure * * NOTE: This is stored as a big endian number. */typedef union { struct { u16 high_part; /* High 16-bits. */ u32 low_part; /* Low 32-bits. */ } __attribute__((__packed__)); u8 value[6]; /* Value as individual bytes. */} __attribute__((__packed__)) SID_IDENTIFIER_AUTHORITY;/** * struct SID - * * The SID structure is a variable-length structure used to uniquely identify * users or groups. SID stands for security identifier. * * The standard textual representation of the SID is of the form: * S-R-I-S-S... * Where: * - The first "S" is the literal character 'S' identifying the following * digits as a SID. * - R is the revision level of the SID expressed as a sequence of digits * in decimal. * - I is the 48-bit identifier_authority, expressed as digits in decimal, * if I < 2^32, or hexadecimal prefixed by "0x", if I >= 2^32. * - S... is one or more sub_authority values, expressed as digits in * decimal. * * Example SID; the domain-relative SID of the local Administrators group on * Windows NT/2k: * S-1-5-32-544 * This translates to a SID with: * revision = 1, * sub_authority_count = 2, * identifier_authority = {0,0,0,0,0,5}, // SECURITY_NT_AUTHORITY * sub_authority[0] = 32, // SECURITY_BUILTIN_DOMAIN_RID * sub_authority[1] = 544 // DOMAIN_ALIAS_RID_ADMINS */typedef struct { u8 revision; u8 sub_authority_count; SID_IDENTIFIER_AUTHORITY identifier_authority; u32 sub_authority[1]; /* At least one sub_authority. */} __attribute__((__packed__)) SID;/** * enum SID_CONSTANTS - Current constants for SIDs. */typedef enum { SID_REVISION = 1, /* Current revision level. */ SID_MAX_SUB_AUTHORITIES = 15, /* Maximum number of those. */ SID_RECOMMENDED_SUB_AUTHORITIES = 1, /* Will change to around 6 in a future revision. */} SID_CONSTANTS;/** * enum ACE_TYPES - The predefined ACE types (8-bit, see below). */typedef enum { ACCESS_MIN_MS_ACE_TYPE = 0, ACCESS_ALLOWED_ACE_TYPE = 0, ACCESS_DENIED_ACE_TYPE = 1, SYSTEM_AUDIT_ACE_TYPE = 2, SYSTEM_ALARM_ACE_TYPE = 3, /* Not implemented as of Win2k. */ ACCESS_MAX_MS_V2_ACE_TYPE = 3, ACCESS_ALLOWED_COMPOUND_ACE_TYPE= 4, ACCESS_MAX_MS_V3_ACE_TYPE = 4, /* The following are Win2k only. */ ACCESS_MIN_MS_OBJECT_ACE_TYPE = 5, ACCESS_ALLOWED_OBJECT_ACE_TYPE = 5, ACCESS_DENIED_OBJECT_ACE_TYPE = 6, SYSTEM_AUDIT_OBJECT_ACE_TYPE = 7, SYSTEM_ALARM_OBJECT_ACE_TYPE = 8, ACCESS_MAX_MS_OBJECT_ACE_TYPE = 8, ACCESS_MAX_MS_V4_ACE_TYPE = 8, /* This one is for WinNT&2k. */ ACCESS_MAX_MS_ACE_TYPE = 8,} __attribute__((__packed__)) ACE_TYPES;/** * enum ACE_FLAGS - The ACE flags (8-bit) for audit and inheritance. * * SUCCESSFUL_ACCESS_ACE_FLAG is only used with system audit and alarm ACE * types to indicate that a message is generated (in Windows!) for successful * accesses. * * FAILED_ACCESS_ACE_FLAG is only used with system audit and alarm ACE types * to indicate that a message is generated (in Windows!) for failed accesses. */typedef enum { /* The inheritance flags. */ OBJECT_INHERIT_ACE = 0x01, CONTAINER_INHERIT_ACE = 0x02, NO_PROPAGATE_INHERIT_ACE = 0x04, INHERIT_ONLY_ACE = 0x08, INHERITED_ACE = 0x10, /* Win2k only. */ VALID_INHERIT_FLAGS = 0x1f, /* The audit flags. */ SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, FAILED_ACCESS_ACE_FLAG = 0x80,} __attribute__((__packed__)) ACE_FLAGS;/** * struct ACE_HEADER - * * An ACE is an access-control entry in an access-control list (ACL). * An ACE defines access to an object for a specific user or group or defines * the types of access that generate system-administration messages or alarms * for a specific user or group. The user or group is identified by a security * identifier (SID). * * Each ACE starts with an ACE_HEADER structure (aligned on 4-byte boundary), * which specifies the type and size of the ACE. The format of the subsequent * data depends on the ACE type. */typedef struct { ACE_TYPES type; /* Type of the ACE. */ ACE_FLAGS flags; /* Flags describing the ACE. */ u16 size; /* Size in bytes of the ACE. */} __attribute__((__packed__)) ACE_HEADER;/** * enum ACCESS_MASK - The access mask (32-bit). * * Defines the access rights. */typedef enum { /* * The specific rights (bits 0 to 15). Depend on the type of the * object being secured by the ACE. */ /* Specific rights for files and directories are as follows: */ /* Right to read data from the file. (FILE) */ FILE_READ_DATA = const_cpu_to_le32(0x00000001), /* Right to list contents of a directory. (DIRECTORY) */ FILE_LIST_DIRECTORY = const_cpu_to_le32(0x00000001), /* Right to write data to the file. (FILE) */ FILE_WRITE_DATA = const_cpu_to_le32(0x00000002), /* Right to create a file in the directory. (DIRECTORY) */ FILE_ADD_FILE = const_cpu_to_le32(0x00000002), /* Right to append data to the file. (FILE) */ FILE_APPEND_DATA = const_cpu_to_le32(0x00000004), /* Right to create a subdirectory. (DIRECTORY) */ FILE_ADD_SUBDIRECTORY = const_cpu_to_le32(0x00000004), /* Right to read extended attributes. (FILE/DIRECTORY) */ FILE_READ_EA = const_cpu_to_le32(0x00000008), /* Right to write extended attributes. (FILE/DIRECTORY) */ FILE_WRITE_EA = const_cpu_to_le32(0x00000010), /* Right to execute a file. (FILE) */ FILE_EXECUTE = const_cpu_to_le32(0x00000020), /* Right to traverse the directory. (DIRECTORY) */ FILE_TRAVERSE = const_cpu_to_le32(0x00000020), /* * Right to delete a directory and all the files it contains (its * children), even if the files are read-only. (DIRECTORY) */ FILE_DELETE_CHILD = const_cpu_to_le32(0x00000040), /* Right to read file attributes. (FILE/DIRECTORY) */ FILE_READ_ATTRIBUTES = const_cpu_to_le32(0x00000080), /* Right to change file attributes. (FILE/DIRECTORY) */ FILE_WRITE_ATTRIBUTES = const_cpu_to_le32(0x00000100), /* * The standard rights (bits 16 to 23). Are independent of the type of * object being secured. */ /* Right to delete the object. */ DELETE = const_cpu_to_le32(0x00010000), /* * Right to read the information in the object's security descriptor, * not including the information in the SACL. I.e. right to read the * security descriptor and owner. */ READ_CONTROL = const_cpu_to_le32(0x00020000), /* Right to modify the DACL in the object's security descriptor. */ WRITE_DAC = const_cpu_to_le32(0x00040000), /* Right to change the owner in the object's security descriptor. */ WRITE_OWNER = const_cpu_to_le32(0x00080000), /* * Right to use the object for synchronization. Enables a process to * wait until the object is in the signalled state. Some object types * do not support this access right. */ SYNCHRONIZE = const_cpu_to_le32(0x00100000), /* * The following STANDARD_RIGHTS_* are combinations of the above for * convenience and are defined by the Win32 API. */ /* These are currently defined to READ_CONTROL. */ STANDARD_RIGHTS_READ = const_cpu_to_le32(0x00020000), STANDARD_RIGHTS_WRITE = const_cpu_to_le32(0x00020000), STANDARD_RIGHTS_EXECUTE = const_cpu_to_le32(0x00020000), /* Combines DELETE, READ_CONTROL, WRITE_DAC, and WRITE_OWNER access. */ STANDARD_RIGHTS_REQUIRED = const_cpu_to_le32(0x000f0000), /* * Combines DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER, and * SYNCHRONIZE access.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -