Permissions

Understanding Linux File Permissions

Each file and directory in Linux has an associated owner, group, and others. The permissions define who can do what.

Permission Structure

Each file has three permission types:

Symbol
Permission
Numeric Value
Description

r

Read

4

View file contents

w

Write

2

Modify file contents

x

Execute

1

Run file as a program

These permissions apply to three categories:

Symbol
Category
Description

u

User

The owner of the file

g

Group

Users in the file’s group

o

Others

All other users

Example: Viewing File Permissions

Run the ls -l command to see file permissions.

Example output:

Breaking Down the Output

  • -rwxr-xr--Permissions

  • 1Number of hard links

  • userOwner of the file

  • groupGroup of the file

  • 1234File size (in bytes)

  • Jan 1 12:00Last modified date

  • script.shFilename

Explaining the Permissions (-rwxr-xr--)

Character
Meaning

-

Regular file (d for directories)

rwx

Owner (User) can read, write, and execute

r-x

Group can read and execute, but not write

r--

Others can only read


Changing File Permissions

Using chmod (Change Mode)

Symbolic Method

To add, remove, or set permissions using letters:

Numeric Method

Each permission set is represented by a 3-digit number:

  • rwx = 7 (4+2+1)

  • rw- = 6 (4+2)

  • r-- = 4 (4)

Example:

Breakdown of 755

User
Group
Others

7

5

5

rwx

r-x

r-x


Changing Ownership

Use chown to change file owner and chgrp to change file group.


Directory Permissions

Permissions work similarly for directories:

  • r → List files (ls)

  • w → Create/delete files

  • x → Enter the directory (cd)

Example:

To allow everyone to enter:


Special Permissions

Symbol
Name
Used On
Description

s

SetUID

Files

Run file as the owner

s

SetGID

Files/Dirs

Run file as the group; inherit group

t

Sticky Bit

Directories

Only the owner can delete files

Example:


Visual Representation of Linux Permissions

Permission Breakdown Example

Illustration of Numeric Representation

Mode
User (Owner)
Group
Others

777

rwx

rwx

rwx

755

rwx

r-x

r-x

644

rw-

r--

r--


A Real-World Example

Scenario: Securing a Web Directory

Let's say you have a web directory in /var/www/html and want:

  • The owner (www-data) to have full control (rwx).

  • The group (developers) to read and write (rw-).

  • Others should only read (r--).

Commands:

Final Permissions


Sources

ChatGPT helped with some of the examples, and thanks to the Linux Foundation for helping with tables and examples.

Last updated