Windows Permissions Binary

How Windows NTFS permissions encode full control, modify, read & execute, read, and write as binary bit flags in the access mask.

Windows security settings showing file permission binary representation
NTFS Access Mask Architecture Standard Permission Bits Special Permission Bits Full Control Binary Modify Permission Binary FAQ

NTFS Access Mask Architecture

Windows NTFS permissions are fundamentally different from Linux chmod permissions in one critical way: the permission mask is much larger. While Linux uses a 9-bit mask (12-bit with special bits), Windows uses a 32-bit access mask. I have worked with both systems extensively, and the Windows approach is more granular but also more complex.

The NTFS access mask is a 32-bit integer where different ranges of bits control different categories of permissions:

After migrating a file share from an old Windows Server 2008 box, I saw firsthand how NTFS ACE entries accumulate over time. Knowing the bit layout of access masks helped me consolidate over 200 rules into 12 clean entries.

Bit RangeCategoryDescription
31-24GenericGENERIC_READ, GENERIC_WRITE, GENERIC_EXECUTE, GENERIC_ALL
23-17Reserved/SpecialSynchronize, Access System Security, Max Allowed
16StandardDELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER
15-0Object-SpecificFile-specific: ReadData, WriteData, AppendData, Execute, etc.

Each permission level in Windows — Full Control, Modify, Read & Execute, Read, Write — is a predefined combination of these individual bit positions. When you look at a permission through the Windows security dialog, you are seeing a human-readable label for a specific bitmask value.

Let me be clear about the structure: the high 8 bits (24-31) are used for generic access rights that map to lower bits, the standard access rights occupy bits 16-23, and the object-specific rights occupy bits 0-15 for files and directories. The complete mask for Full Control is 2032127 decimal, or 0x1F01FF in hex.

NTFS vs Linux: Key Binary Difference

Linux chmod = 9 bits (3 triples of rwx). Windows NTFS = 32 bits with multiple categories. While Linux assigns one 3-bit value per user/group/other, Windows assigns a 32-bit mask per ACE (Access Control Entry). Use our hex converter to translate between the numeric and bit views.

Standard Permission Bit Positions

The lower 16 bits of the NTFS access mask define the file-specific and standard permissions. Here are the individual bit positions I have found most important in my daily administration work.

BitHexDecimalPermissionDescription
00x00011ReadDataRead file contents or list directory
10x00022WriteDataWrite to file or create files in directory
20x00044AppendDataAppend to file or create subdirectories
30x00088ReadEARead extended attributes
40x001016WriteEAWrite extended attributes
50x002032ExecuteFileExecute file or traverse directory
60x004064DeleteChildDelete subdirectories and files (dirs only)
70x0080128ReadAttributesRead basic file attributes
80x0100256WriteAttributesWrite basic file attributes
160x1000065536DELETEDelete the file or directory
170x20000131072READ_CONTROLRead security descriptor and owner
180x40000262144WRITE_DACModify DACL (change permissions)
190x80000524288WRITE_OWNERTake ownership

Notice the pattern: the standard permissions use bit positions that are powers of 2, exactly like Linux bits. Bit 0 = 1, bit 1 = 2, bit 2 = 4, bit 3 = 8, and so on. This is the same binary encoding principle — each bit position corresponds to a specific permission flag.

Special Permission Bits

Beyond the standard permissions, Windows defines several special permission bits that interact with the access checking system in unique ways. These are the bits that separate Modify from Full Control.

BitHexPermissionPresent in Full Control?
200x100000SynchronizeYes
230x800000Access System SecurityNo (requires SeSecurityPrivilege)
240x01000000GENERIC_READYes (mapped)
250x02000000GENERIC_WRITEYes (mapped)
260x04000000GENERIC_EXECUTEYes (mapped)
270x08000000GENERIC_ALLYes

One thing I learned debugging security descriptors on Windows Server: the Synchronize bit (0x100000, bit 20) is critical for proper synchronization behavior. Without it, applications that use WaitForSingleObject on file handles may fail. Full Control includes Synchronize, but Modify does not — this is a real difference that can cause subtle bugs in multithreaded applications.

Generic Rights Mapping in Binary
GENERIC_READ    (0x80000000) ReadData | ReadAttributes | ReadEA | READ_CONTROL
GENERIC_WRITE   (0x40000000) WriteData | AppendData | WriteAttributes | WriteEA
GENERIC_EXECUTE (0x20000000) ExecuteFile | ReadAttributes | ReadEA | READ_CONTROL
GENERIC_ALL     (0x10000000) All of the above + DELETE + WRITE_DAC + WRITE_OWNER

Full Control Binary: 2032127 (0x1F01FF)

Full Control is the most permissive NTFS permission. In my experience, it is as overused as Linux chmod 777, and for the same reasons — administrators use it as a shortcut when they cannot figure out the exact permission set needed.

Full Control Binary (0x1F01FF)
Hex:      0x1F01FF
Decimal: 2032127

Full 21-bit binary:
11111 0000 0001 1111 1111

Bits 20-16:  11111 = Synchronize + WRITE_OWNER + WRITE_DAC + READ_CONTROL + DELETE
Bits 15-8:  0000 0001 = Bit 8 (WriteAttributes) only
Bits 7-0:   1111 1111 = All file permissions (ReadData through ReadAttributes)

The key bits that make Full Control special compared to Modify:

In practice, I reserve Full Control for administrators and service accounts that need to manage permissions. Regular users and application pools should never get Full Control — they should get Modify at most. The binary difference is clear: Full Control sets bit 18 (WRITE_DAC) and bit 19 (WRITE_OWNER), while Modify does not.

Modify Permission Binary: 0x01BF

The Modify permission is the Windows equivalent of Linux chmod 755 — it is the standard all-purpose permission for users who need to read, write, modify, and delete files, but do not need to change permissions or take ownership.

Modify Permission Binary (0x01BF)
Hex:     0x01BF
Decimal: 447

Binary (9 bits active):
1 1011 1111

Bit 8 (0x100):      1 = WriteAttributes
Bit 7 (0x80):      1 = ReadAttributes
Bit 6 (0x40):      1 = DeleteChild (directory only)
Bit 5 (0x20):      1 = ExecuteFile
Bit 4 (0x10):      1 = WriteEA
Bit 3 (0x08):      1 = ReadEA
Bit 2 (0x04):      1 = AppendData
Bit 1 (0x02):      1 = WriteData
Bit 0 (0x01):      1 = ReadData

Modify does not include the DELETE standard right (bit 16, 0x10000). While you can modify the file contents, delete subdirectories, and delete files within directories (that is the DeleteChild bit for directories), you cannot delete the file object itself if the parent directory denies deletion. This is a subtle but important distinction I have seen catch many Windows administrators off guard.

Read & Execute vs Write vs Modify — Binary Comparison
Read & Execute (0x01A0) = 1 1010 0000
  ReadData + ExecuteFile + ReadAttributes + ReadEA

Write (0x0116) =   1 0001 0110
  WriteData + AppendData + WriteAttributes + ReadAttributes

Modify (0x01BF) =  1 1011 1111
  All file permissions including write and delete

Full Control (0x1F01FF): adds WRITE_DAC + WRITE_OWNER + DELETE + SYNCHRONIZE

A practical tip from my work: when setting up IIS application pools, always use Modify, not Full Control. The worker process does not need to change ACLs or take ownership. If a security breach occurs, limiting the process token to Modify prevents the attacker from escalating through DACL manipulation. The binary bit difference — missing bits 18 and 19 — is your security boundary.

Convert NTFS Permission Masks

Use the hex converter to translate between Windows permission mask values and their binary representations. See exactly which bits are set for each permission level.

Frequently Asked Questions About Windows Permissions Binary

What is the binary representation of Full Control in Windows?

Full Control (2032127 decimal) in binary is 111101111111111111111. This 21-bit mask has almost every bit set. A more useful representation is its hex form 0x1F01FF. The low 16 bits (0x01FF) control standard permissions like Read, Write, Execute, and Delete. The high bits control special permissions like Take Ownership, Change Permissions, and Synchronize.

How are Windows NTFS permissions stored as bits?

Windows NTFS permissions use a bitmask, where each permission is a specific bit position in an integer. Common standard permissions include Read (bit 0), Write (bit 1), Execute (bit 2), and Delete (bit 3). Advanced permissions like Take Ownership, Change Permissions, and Synchronize use higher bit positions. These bits are combined using bitwise OR to form composite permission sets like Modify and Full Control.

What is the difference between Modify and Read & Execute in binary?

Modify (0x01BF) in binary is 110111111, which includes Write, Delete, and the ability to modify the file. Read & Execute (0x01A0) is 110100000 in 9-bit view, which lacks Write and Delete bits. Modify adds bits 0 (ReadData), 1 (WriteData), 3 (Delete), and 4 (ReadAttributes) that Read & Execute does not have.

What are the NTFS special permissions?

NTFS special permissions include: Take Ownership (bit 17), Change Permissions (bit 16), Synchronize (bit 20), Read Attributes (bit 5), Write Attributes (bit 6), Read Extended Attributes (bit 7), Write Extended Attributes (bit 8), and Delete Subdirectories and Files (bit 15, for directories only). These are higher-order bits in the permission mask beyond the standard Read/Write/Execute bits.

How does Windows ACE mask use bitwise operations?

Windows ACE (Access Control Entry) masks use bitwise OR to combine individual permission flags. For example, the Modify permission = GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | DELETE, which produces mask value 0x01BF. Access checks use bitwise AND: if (desired_access & ace_mask) == desired_access, the access is granted. This is exactly the same bitwise logic used in Linux ACL masks but with many more bit positions.

What does 0x1F01FF mean in binary?

0x1F01FF in binary is 111110000000111111111. The hex digits break down as: 1F = 11111 (bits 20-16), 01 = 00000001 (bits 15-8), FF = 11111111 (bits 7-0). The leading 1F (11111) represents the five special/standard rights: Synchronize (bit 20), WriteOwner (bit 19), WriteDAC (bit 18), ReadControl (bit 17), and Delete (bit 16). This is the Full Control mask.

How do I view the binary permission mask of a file in Windows?

Use PowerShell: (Get-Acl C:\path\to\file).Access | Format-List. This shows the FileSystemRights property, which displays the access mask numerically. You can also use icacls.exe in Command Prompt: icacls C:\path\to\file. To see the raw hexadecimal mask, use (Get-Acl file).Access | Select IdentityReference, FileSystemRights in PowerShell.

Related Tools

Bitwise Calculator →

AND, OR, XOR, NOT, shifts

Bitwise Guide →

Complete operations reference

Hex to ASCII →

Decode hex strings

SHA256 Generator →

Compute hashes