Skip to the content.
24 August 2026

In Linux and Unix-like operating systems, security is built from the ground up starting with file permissions. Every file, directory, and system process is governed by strict access controls that dictate who can read, modify, or execute files.

If you have ever encountered an “Access Denied” or “Permission Denied” error when running a script, configuring a server, or pushing to a repository, understanding Unix file permissions is key. In this article, we’ll explain how permissions are structured, how octal and symbolic representations map to each other, and how to use the chmod command.


The Three Tiers of Ownership

Every file and directory in a Unix file system has three distinct tiers of user associations:

  1. Owner (u): The individual user who owns the file (usually the creator).
  2. Group (g): A designated group of users who share access to the file.
  3. Others (o): Every other user on the system who is not the owner and is not in the group (often referred to as “world” permissions).

The Three Permission Types (rwx)

Each of the ownership tiers has a set of three basic access permissions:


Representation Formats: Symbolic vs. Octal

Permissions are represented in two standard ways: Symbolic notation (text) and Octal notation (numbers).

1. Symbolic Notation

When you run ls -l in a terminal, you will see a 10-character string representing file status and permissions:

-rwxr-xr--

2. Octal Notation

Octal notation uses a three-digit base-8 number to define permissions, where each digit represents one of the ownership tiers (Owner, Group, Others). Each permission type has a static weight:

To find the octal digit for a tier, add the weights of its active permissions:

Thus, -rwxr-xr-- corresponds to the octal permission 754.


Changing Permissions with chmod

The chmod (Change Mode) utility updates file permissions using either representation.

1. Using Octal Mode

# Give owner full control, group read/execute, and others read only
chmod 754 script.sh

2. Using Symbolic Mode

Symbolic mode uses operators (+, -, =) to add, subtract, or set specific permissions:

# Add execute permission for the owner
chmod u+x script.sh

# Remove write permission for group and others
chmod go-w document.txt

# Set exact permissions: owner read/write, group/others read only
chmod u=rw,go=r config.json

Try the Interactive Permissions Calculator

Configuring server deployments or security configurations manually is error-prone. To eliminate guesswork, use our secure client-side tool:

Because our tool runs entirely in your browser, your security plans and system names remain completely confidential.