Platform SDK: Access Control

Well-Known SIDs

Well-known SIDs identify generic groups and generic users. For example, there are well-known SIDs to identify the following groups and users:

There are universal well-known SIDs, which are meaningful on all secure systems using this security model, including operating systems other than Windows NT/Windows 2000. In addition, there are well-known SIDs that are meaningful only on Windows NT/Windows 2000 systems.

The Win32 API defines a set of constants for well-known identifier authority and RID values. You can use these constants to create well-known SIDs. The following example combines the SECURITY_WORLD_SID_AUTHORITY and SECURITY_WORLD_RID constants to show the universal well-known SID for the special group representing all users (Everyone or World):

S-1–1–0

This example uses the string notation for SIDs in which S identifies the string as a SID, the first 1 is the revision level of the SID, and the remaining two digits are the SECURITY_WORLD_SID_AUTHORITY and SECURITY_WORLD_RID constants.

You can use the AllocateAndInitializeSid function to build a SID by combining an identifier authority value with up to eight subauthority values. For example, to determine whether the logged-on user is a member of a particular well-known group, call AllocateAndInitializeSid to build a SID for the well-known group and use the EqualSid function to compare that SID to the group SIDs in the user's access token. For sample code, see Searching for a SID in an Access Token. You must call the FreeSid function to free a SID allocated by AllocateAndInitializeSid.

The remainder of this section contains tables of well-known SIDs and tables of identifier authority and subauthority constants that you can use to build well-known SIDs.

The following are some universal well-known SIDs.

Universal well-known SID Value Identifies
Null SID (S-1–0–0) A group with no members. This is often used when a SID value is not known.
World (S-1–1–0) A group that includes all users.
Local (S-1–2–0) Users who log on to terminals locally (physically) connected to the system.
Creator Owner ID (S-1–3–0) A security identifier to be replaced by the security identifier of the user who created a new object. This SID is used in inheritable ACEs.
Creator Group ID (S-1–3–1) Identifies a security identifier to be replaced by the primary-group SID of the user who created a new object. Use this SID in inheritable ACEs.

The following table lists the predefined identifier authority constants. The first four values are used with universal well-known SIDs; the last value is used with Windows NT/Windows 2000 well-known SIDs.

Identifier authority Value SID string prefix
SECURITY_NULL_SID_AUTHORITY 0 S-1–0
SECURITY_WORLD_SID_AUTHORITY 1 S-1–1
SECURITY_LOCAL_SID_AUTHORITY 2 S-1–2
SECURITY_CREATOR_SID_AUTHORITY 3 S-1–3
SECURITY_NT_AUTHORITY 5 S-1–5

The following RID values are used with universal well-known SIDs. The Identifier authority column shows the prefix of the identifier authority with which you can combine the RID to create a universal well-known SID.

Relative identifier authority Value Identifier authority
SECURITY_NULL_RID 0 S-1–0
SECURITY_WORLD_RID 0 S-1–1
SECURITY_LOCAL_RID 0 S-1–2
SECURITY_CREATOR_OWNER_RID 0 S-1–3
SECURITY_CREATOR_GROUP_RID 1 S-1–3

The SECURITY_NT_AUTHORITY (S-1–5) predefined identifier authority produces SIDs that are not universal but are meaningful only on Windows NT/Windows 2000 installations. You can use the following RID values with SECURITY_NT_AUTHORITY to create well-known SIDs.

Constant Identifies
SECURITY_DIALUP_RID
(S-1–5–1)
Users who log on to terminals using a dial-up modem. This is a group identifier.
SECURITY_NETWORK_RID
(S-1–5–2)
Users who can log on across a network. This is a group identifier.
SECURITY_BATCH_RID
(S-1–5–3)
Users who can log on using a batch queue facility. This is a group identifier.
SECURITY_INTERACTIVE_RID
(S-1–5–4)
Users who can log on for interactive operation. This is a group identifier.
SECURITY_LOGON_IDS_RID
(S-1–5–5-X-Y)
A logon session. This is used to ensure that only processes in a given logon session can gain access to the window-station objects for that session. The X and Y values for these SIDs are different for each logon session. The value SECURITY_LOGON_IDS_RID_COUNT is the number of RIDs in this identifier (5-X-Y).
SECURITY_SERVICE_RID
(S-1–5–6)
Accounts authorized to log on as a service.
SECURITY_ANONYMOUS_LOGON_RID
(S-1–5–7)
Anonymous logon, or null session logon.
SECURITY_PROXY_RID
(S-1–5–8)
SECURITY_ENTERPRISE_CONTROLLERS_RID
(S-1–5–9)
SECURITY_PRINCIPAL_SELF_RID
(S-1–5–10)
The PRINCIPAL_SELF security identifier can be used in the ACL of a user or group object. During an access check, the system replaces the SID with the SID of the object. The PRINCIPAL_SELF SID is useful for specifying an inheritable ACE that applies to the user or group object that inherits the ACE. It the only way of representing the SID of a created object in the default security descriptor in the schema.
SECURITY_AUTHENTICATED_USER_RID
(S-1–5–11)
The authenticated users.
SECURITY_RESTRICTED_CODE_RID
(S-1–5–12)
Restricted code.
SECURITY_TERMINAL_SERVER_RID
(S-1-5-13)
Terminal Services: Automatically added to the security token of a user who logs on to a Terminal Server.
SECURITY_LOCAL_SYSTEM_RID
(S-1–5–18)
A special account used by the operating system.
SECURITY_NT_NON_UNIQUE
(S-1–5–21)
SECURITY_BUILTIN_DOMAIN_RID
(S-1–5–32)
The built-in system domain.

The following RIDs are relative to each domain.

RID Identifies
DOMAIN_USER_RID_ADMIN The administrative user account in a domain.
DOMAIN_USER_RID_GUEST The guest-user account in a domain. Users who do not have an account can automatically log onto this account.
DOMAIN_GROUP_RID_ADMINS The domain administrators' group. This account exists only on systems running Windows NT Server/Windows 2000 Server.
DOMAIN_GROUP_RID_USERS A group containing all user accounts in a domain. All users are automatically added to this group.
DOMAIN_GROUP_RID_GUESTS The guest-group account in a domain.
DOMAIN_GROUP_RID_COMPUTERS The domain computers' group. All computers in the domain are members of this group.
DOMAIN_GROUP_RID_CONTROLLERS The domain controllers' group. All DCs in the domain are members of this group.
DOMAIN_GROUP_RID_CERT_ADMINS The certificate publishers' group. Computers running Certificate Services are members of this group.
DOMAIN_GROUP_RID_SCHEMA_ADMINS The schema administrators' group. Members of this group can modify the Active Directory schema.
DOMAIN_GROUP_RID_ENTERPRISE_ADMINS The enterprise administrators' group. Members of this group have full access to all domains in the Active Directory forest. Enterprise administrators are responsible for forest-level operations such as adding or removing new domains.
DOMAIN_GROUP_RID_POLICY_ADMINS The policy administators' group.

The following table has examples of domain-relative RIDs you can use to form well-known SIDs for local groups (aliases). For more information about local and global groups, see Local Group Functions and Group Functions.

RID Identifies
DOMAIN_ALIAS_RID_ADMINS A local group used for administration of the domain.
DOMAIN_ALIAS_RID_USERS A local group representing all users in the domain.
DOMAIN_ALIAS_RID_GUESTS A local group representing guests of the domain.
DOMAIN_ALIAS_RID_POWER_USERS A local group used to represent a user or set of users who expect to treat a system as if it were their personal computer rather than as a workstation for multiple users.
DOMAIN_ALIAS_RID_ACCOUNT_OPS A local group existing only on systems running Windows NT Server/Windows 2000 Server. This local group permits control over non-administrator accounts.
DOMAIN_ALIAS_RID_SYSTEM_OPS A local group existing only on systems running Windows NT Server/Windows 2000 Server. This local group performs system administrative functions, not including security functions. It establishes network shares, controls printers, unlocks workstations, and performs other operations.
DOMAIN_ALIAS_RID_PRINT_OPS A local group existing only on systems running Windows NT Server/Windows 2000 Server. This local group controls printers and print queues.
DOMAIN_ALIAS_RID_BACKUP_OPS A local group used for controlling assignment of file backup-and-restore privileges.
DOMAIN_ALIAS_RID_REPLICATOR A local group responsible for copying security databases from the primary domain controller to the backup domain controllers. These accounts are used only by the system.
DOMAIN_ALIAS_RID_RAS_SERVERS A local group representing RAS and IAS servers. This group permits access to various attributes of user objects.
DOMAIN_ALIAS_RID_PREW2KCOMPACCESS A local group existing only on systems running Windows 2000 Server. It provides access rights and privileges equal to anonymous access under Windows NT, which is Everyone access.