Well-known principals

A well-known principal is a principal whose SID is fixed by the system rather than allocated when an account is created. Some name a single specific entity (SYSTEM, Anonymous). Some name a category (Everyone, Authenticated Users). Some are placeholders that get rewritten during inheritance (CREATOR OWNER). All of them have the same purpose: they let you write ACEs that target a role without naming a specific user.

You will recognise the common ones quickly; the full catalog exists so you can look up the rest when they appear in an audit log or an ACE.

How to read the catalog #

Each well-known SID has a fixed numeric value, a conventional name, and a defined behaviour during access checks. Some of them are not real principals at all — they are placeholders or labels that the access check treats specially. Where that distinction matters, it is called out.

The catalog is organised by SID authority, because that is how the SIDs are structured and how you will tend to recognise them.

Universal SIDs (S-1-0, S-1-1, S-1-2, S-1-3) #

These authorities are defined globally — not tied to any specific machine or domain — and exist for cross-system meaning.

SIDNameBehaviour
S-1-0-0NobodyMatches nothing. Used to write an ACE that can never apply, usually as a deliberate placeholder.
S-1-1-0EveryoneMatches every token, including Anonymous. The broadest possible grant.
S-1-2-0LocalMatches any token created by a local logon (not a network logon).
S-1-2-1Console LogonMatches a token created by a physical or console session.
S-1-3-0Creator OwnerPlaceholder. Inheritable ACEs containing this SID are rewritten to the new object's owner SID when the child is created. Does not match anything at access-check time.
S-1-3-1Creator GroupPlaceholder. Same as Creator Owner but for the primary group.
S-1-3-4Owner RightsSpecial. When present in a DACL, it suppresses the implicit READ_CONTROL and WRITE_DAC grants that the owner would otherwise receive. See Ownership and implicit rights.

The placeholder SIDs (S-1-3-0 and S-1-3-1) are the trickiest. They never grant or deny anything at access-check time. Their job is to make inheritable ACEs portable across owners — you write an ACE that grants WRITE to Creator Owner, and when a child object is created, that ACE is rewritten to grant WRITE to whoever owns the child.

NT Authority SIDs (S-1-5) #

This is the largest group of well-known SIDs and where most of the principals you will use day-to-day live.

Logon classifiers #

SIDNameBehaviour
S-1-5-2NetworkMatches a token created by a network logon.
S-1-5-4InteractiveMatches a token created by an interactive logon (console, RDP, SSH).
S-1-5-6ServiceMatches a token created for a service.
S-1-5-7AnonymousThe user SID for tokens at the Anonymous impersonation level.
S-1-5-11Authenticated UsersMatches every successfully authenticated token. Excludes Anonymous.

The pair S-1-1-0 (Everyone) and S-1-5-11 (Authenticated Users) is the most common distinction worth getting right. Everyone includes Anonymous; Authenticated Users excludes it. Anything reachable by Anonymous is reachable by an unauthenticated network peer, which is almost never what you want.

System actors #

SIDNameBehaviour
S-1-5-18Local System (SYSTEM)The kernel and TCB services run as SYSTEM. The most privileged identity on the local machine.
S-1-5-19Local ServiceBuilt-in service account with reduced privileges.
S-1-5-20Network ServiceBuilt-in service account that can authenticate outward to remote machines.

Built-in aliases #

The sub-authority 32 under NT Authority is the "BUILTIN" domain, which holds aliases for common administrative roles. The full alias list includes a few dozen entries; the ones you will see most often:

SIDName
S-1-5-32-544BUILTIN\Administrators
S-1-5-32-545BUILTIN\Users
S-1-5-32-546BUILTIN\Guests
S-1-5-32-551BUILTIN\Backup Operators

Logon sessions and domains #

PatternMeaning
S-1-5-5-X-YA specific logon session. X and Y are derived from the session's LUID. Always carried in the token of any thread belonging to that session.
S-1-5-21-DA1-DA2-DA3-RIDA principal in a specific domain. DA1-DA2-DA3 identifies the domain; RID identifies the principal within it.
S-1-5-21-DA1-DA2-DA3-500The Administrator account of that domain (RID 500 is reserved).
S-1-5-21-DA1-DA2-DA3-512Domain Admins.
S-1-5-21-DA1-DA2-DA3-513Domain Users.
S-1-5-21-DA1-DA2-DA3-515Domain Computers — the machine accounts in the domain.

The full set of reserved RIDs under S-1-5-21-* follows administrative convention. Domain-specific principals (your actual users) get RIDs allocated above 1000.

Service SIDs #

A SID derived from a service's name, used to grant a service ACL entries independent of the account it runs under.

PatternMeaning
S-1-5-80-h1-h2-h3-h4-h5A service SID. The five hash values come from the SHA-1 of the UTF-16LE uppercased service name, split into five little-endian 32-bit integers.

Service SIDs let you say "grant the loregd service read access to this file" without saying "grant SYSTEM read access" or "grant a specific user read access" — both of which would be too broad.

Mandatory integrity labels (S-1-16) #

These are not principals. They are labels carried in a token's integrity level field and in an object's mandatory label ACE.

SIDLevel
S-1-16-0Untrusted
S-1-16-4096Low
S-1-16-8192Medium
S-1-16-12288High
S-1-16-16384System

These five are the standard, well-known levels. The level is really the SID's single sub-authority as an unsigned integer, compared numerically, so any S-1-16-<n> with exactly one sub-authority is valid — non-standard values such as medium-plus (S-1-16-8448) and protected (S-1-16-20480) appear for Windows interop.

Integrity levels are a vertical axis on top of identity. A user at Medium integrity and the same user at High integrity have the same SID but different integrity labels. See Mandatory integrity control for how the levels interact with access checks.

Process trust labels (S-1-19) #

Like integrity labels, these are not principals. They label processes by signing trust for Process integrity protection.

PatternMeaning
S-1-19-T-LPIP trust label. T is the PIP type (0 None, 512 Protected, 1024 Isolated). L is the trust level within that type.

Common combinations:

SIDTrust meaning
S-1-19-0-0No PIP protection. Default for unsigned processes.
S-1-19-512-1024Protected, Authenticode. Third-party signed binaries.
S-1-19-512-2048Protected, App. Peios-distributed applications.
S-1-19-512-4096Protected, Peios. Core Peios components.
S-1-19-512-8192Protected, PeiosTcb. Trusted computing base.

Confinement and capability SIDs (S-1-15) #

These are used by Confinement to label sandboxed applications and the capabilities they have been granted.

Confinement domains #

SIDName
S-1-15-2-1ALL_APPLICATION_PACKAGES — matches every confined application in normal confinement mode.
S-1-15-2-2ALL_RESTRICTED_APPLICATION_PACKAGES — matches confined applications in both normal and strict modes.

Well-known capabilities #

SIDCapability
S-1-15-3-1internetClient — outbound network.
S-1-15-3-2internetClientServer — inbound and outbound network.
S-1-15-3-3privateNetworkClientServer — LAN/private network.
S-1-15-3-8enterpriseAuthentication — domain credential access.
S-1-15-3-9sharedUserCertificates — certificate store access.
S-1-15-3-10removableStorage — removable media access.

Derived capability SIDs #

For application-defined capabilities beyond the well-known set, the SID is derived from the capability name:

PatternMeaning
S-1-15-3-h1-h2-h3-h4-h5-h6-h7-h8A derived capability SID. The eight values come from the SHA-256 of the capability name. The same name always produces the same SID.

Special placeholder SIDs #

A few SIDs never appear as a real principal but are recognised by the access check.

SIDNameHow it is used
S-1-3-0Creator OwnerSubstituted at inheritance time.
S-1-3-1Creator GroupSubstituted at inheritance time.
S-1-3-4Owner RightsSuppresses owner implicit rights when present in a DACL.
S-1-5-10Principal SelfA placeholder for "the principal this object is about". The access check substitutes the caller-supplied self_sid parameter for this SID at evaluation time. Used in directory-style objects where an ACE says "the user can modify their own properties".

These are the cases where a SID in an ACE does not literally mean "match a token whose user SID is this value". They are special-cased by the access check.

Which ones to use in practice #

The catalog above is comprehensive. In practice, day-to-day administrative work touches a much smaller set:

  • BUILTIN\Administrators and SYSTEM for default protective DACLs.
  • Authenticated Users for "any logged-in user should be able to read this".
  • Everyone only when you actually mean "including unauthenticated network peers".
  • Creator Owner in inheritable ACEs that should follow the owner of a child object.
  • Owner Rights when you want to suppress the owner's default grants on a sensitive object.
  • Specific user/group SIDs allocated by the directory (the S-1-5-21-...-RID form) for everyone else.

The remaining well-known SIDs — service SIDs, capability SIDs, integrity labels, PIP labels — show up in specialised contexts that have their own topics in these docs.

Where to go next #

For the attributes a token carries beyond fixed identity — the other input to attribute-based access rules — read Claims on a token.

For the exact numeric values in machine-readable form, see the Well-known SIDs reference.

Edit this page