The Big Picture: The Guest List at the Door
Think of a building with a guest list at each door. The bouncer checks your name (or the group you belong to) against the list and decides: come in, or stay out. Every file and folder on NTFS has its own guest list. That is what lets one PC hold files for several people, while keeping each person's files private.
FAT32 and exFAT have no guest lists (Section 2). Anyone who can see the drive can open everything. This is one big reason Windows lives on NTFS.
5.1 NTFS Permissions (Read, Write, Execute, Modify, Full Control)
What it is: A permission is a rule that allows or blocks one kind of action on a file or folder for one user or group.
Users and groups. Windows knows people by user accounts (like Sam) and by groups (a named set of accounts, so you can give a rule to many people at once). Common ones:
| Name | Who it means |
|---|---|
| Everyone | All users, including guests |
| Users | Ordinary accounts on this PC |
| Authenticated Users | Anyone who has signed in |
| Administrators | Accounts with full control of the PC |
| SYSTEM | Windows itself (its own internal account) |
The standard permission levels. Open a file, choose Properties → Security and you see these friendly names:
| Permission | What it lets you do |
|---|---|
| Read | See the file/folder and open and read it |
| Write | Create or change contents |
| Read & execute | Read, and also run a program (execute means "run") |
| List folder contents | (Folders only) See the names inside |
| Modify | Read, write, run, and delete |
| Full control | Everything in Modify, plus change permissions and take ownership |
Behind these friendly names are about a dozen finer special permissions (such as "Delete subfolders and files" or "Read attributes"). The standard levels are just handy bundles of them.
Owner. Every file has an owner, usually the person who created it. An owner can always change the file's permissions. Administrators can take ownership.
Allow vs deny. A rule can allow or deny. Rules that deny win over rules that allow. If you are in a group that is allowed but also in a group that is denied, you are denied. Use deny sparingly; it is easy to lock yourself out.
View permissions yourself:
- File Explorer: right-click → Properties → Security tab. Click a name to see its Allow/Deny ticks.
- Command Prompt:
icacls C:\Windows\notepad.exe - PowerShell:
(Get-Acl C:\Windows\notepad.exe).Access
Reading icacls output. Letters in brackets are short codes:
| Code | Meaning |
|---|---|
(F) | Full control |
(M) | Modify |
(RX) | Read and execute |
(R) | Read |
(W) | Write |
(I) | Inherited from the parent folder (Section 5.4) |
(OI) | Object inherit: also applies to files inside the folder |
(CI) | Container inherit: also applies to subfolders |
A line like BUILTIN\Users:(I)(OI)(CI)(RX) reads: "the group Users may read and run; this was inherited, and it applies to files and subfolders." The details vary per file on your PC.
5.2 ACL (Access Control List) Structure
What it is: The ACL is the guest list itself: an ordered list of rules attached to a file or folder. The part that lists who may or may not do things is the DACL (Discretionary ACL: "discretionary" means the owner decides it).
The list is stored in a security descriptor, which holds:
| Part | Meaning |
|---|---|
| Owner | Who owns the object |
| DACL | The allow/deny rules (who may do what) |
| SACL | Rules for auditing (which actions to log). Used mostly by administrators |
Because many files share the same rules, NTFS stores each distinct security descriptor once, in the metadata file $Secure, and each file's record just points to it (Section 4.1). That saves a lot of space.
How Windows checks you. When a program opens a file, the kernel gets your access token (a badge listing who you are and every group you belong to) and walks the ACL from top to bottom:
You: Sam, member of Users + Everyone
Wants: to WRITE to report.docx
ACL on report.docx (checked in order):
1. Deny Guests Write (Sam is not a guest, skip)
2. Allow Sam Modify ◄── covers Write: ACCESS GRANTED
3. Allow Users Read
4. Allow Administrators Full control
If no entry grants the action, access is denied by default. Deny entries are placed first so they win. The chain at work: the file system driver (Section 8) performs this check during the open request.
5.3 ACE (Access Control Entry)
What it is: One rule in the list is an ACE (Access Control Entry). Each ACE says: who, allow or deny, what, and how it spreads.
An ACL (the list) made of ACEs (the rules):
┌──────────────────────────────────────────────────────┐
│ ACL │
│ ┌────────────────────────────────────────────────┐ │
│ │ ACE 1: DENY Guests Write │ │
│ ├────────────────────────────────────────────────┤ │
│ │ ACE 2: ALLOW Sam Modify │ │
│ ├────────────────────────────────────────────────┤ │
│ │ ACE 3: ALLOW Users Read & execute │ │
│ ├────────────────────────────────────────────────┤ │
│ │ ACE 4: ALLOW Administrators Full control │ │
│ └────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
Each ACE contains:
| Field | Meaning |
|---|---|
| Trustee | Who the rule is about. Windows stores a SID (Security Identifier, a long unique number) and shows you the friendly name |
| Type | Allow or Deny |
| Access mask | Which actions (read, write, delete ...) |
| Flags | How the rule is inherited, and whether it was inherited |
Windows tools such as icacls and the Security tab translate SIDs back to names such as Administrators. You can see a raw SID if an account was deleted: the tab shows a long S-1-5-... string instead of a name.
5.4 Inheritance from Parent Folders
What it is: Making a rule for every single file would be unbearable. Instead, rules set on a folder are inherited by everything inside it, automatically. Create a new file in a folder and it gets its parent's rules.
C:\Projects Allow: Team Modify (set here, explicit)
└── Plan\ (inherits: Team can Modify)
└── notes.txt (inherits: Team can Modify)
| Term | Meaning |
|---|---|
| Explicit ACE | Set directly on this item |
| Inherited ACE | Came down from a parent folder (shown with (I) in icacls) |
| Break inheritance | Stop copying the parent's rules to this item. Windows asks whether to convert them (keep a copy of the inherited rules as explicit ones) or remove them |
To see it: In Properties → Security → Advanced, the Inherited from column shows where each rule came from. The Disable inheritance button is the "break" switch.
Order of checking: Explicit rules are checked before inherited ones. Deny comes before allow within each group. So a deny set directly on a file beats an allow inherited from its folder.
Safety tips:
- Do not change permissions on
C:\WindowsorC:\Program Files. Windows needs those rules to work and to stay safe. - Avoid giving Everyone Full control to anything. It lets any account change or replace the file.
- The Administrators group can still fix permissions later, which is why a locked-out file can usually be recovered by taking ownership.
- This is separate from UAC (the "Do you want to allow this app" prompt). UAC decides whether your programs run with admin power; ACLs decide what a given identity may touch.
Summary
| Term | Plain meaning |
|---|---|
| Permission | A rule allowing or blocking one kind of action |
| Owner | The identity that owns the object and can always change its rules |
| ACL / DACL | The ordered guest list of rules on a file or folder |
| ACE | One rule: who, allow/deny, which actions, how it spreads |
| SID | The unique number Windows uses for a user or group |
| Access token | Your badge listing your identity and groups |
| Deny beats allow | A matching deny rule wins over allow rules |
| Inheritance | Rules on a folder pass down to what is inside |
icacls, Security tab, Get-Acl | Tools to see and edit permissions |