# Managing Permissions in GNU/Linux
> Understanding Chown and Chmod, GNU/Linux permissions.
Published on 2021-11-03 | Updated on 2025-01-12 | Tags: permissions
https://xsec.fr/en/gnu-linux/chmod-chown/
---
import Callout from '@shared/components/Callout.astro'
This whole post is write by Olivier Pusadoux from [Les hirondelles du net](https://www.leshirondellesdunet.com/) website.
A GNU/Linux operating system has three types of users and three distinct types of permissions.
This page presents the most common options for scripts, with a focus on managing website folders and files on an Apache server under GNU/Linux.
For additional information, you can consult ubuntu-fr.org documentation:
- [permissions](http://doc.ubuntu-fr.org/permissions)
- [Working directories of a LAMP server](http://doc.ubuntu-fr.org/tutoriel/lamp_repertoires_de_travail)
## The CHmod Command
Types of users:
- The file owner (user)
- The owner's group (group)
- Other users, or the rest of the world (others)
Types of permissions:
- r: read permission
- w: write permission
- x: execute permission
## Binary/Octal Permission Correspondences and Their Meanings
Binary Position | Octal Value | Permissions | Meaning
--- | --- | --- | ---
000 | 0 | - - - | No permissions
001 | 1 | - -x | Executable
010 | 2 | - w - | Write
011 | 3 | - w x | Write and execute
100 | 4 | r - - | Read
101 | 5 | r - x | Read and execute
110 | 6 | r w - | Read and write
111 | 7 | r w x | Read, write, and execute
To modify permissions in octal format, the best way to be certain of the result is to add these values.
For example: change the permissions of the "myscript" file so that I (the owner) am the only one who can modify it, people in my group can read and execute it, and everyone else can only execute it:
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | r - x | - - x
Binary Position | 111 | 101 | 001
Octal Value | 7 | 5 | 1
Modify permissions on `myscript`:
```sh
sudo chmod 751 myscript
```
## Summary of Different Commonly Used Values
644 - Read, write for owner / Read for others.
Default value for a file under GNU/Linux.
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w - | r - - | r - -
Binary Position | 110 | 100 | 100
Octal Value | 6 | 4 | 4
666 - Read, write for everyone, not recommended
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w - | r w - | r w -
Binary Position | 110 | 110 | 110
Octal Value | 6 | 6 | 6
700 - Read, write, execute only for owner
Default value for a directory under GNU/Linux
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | - - - | - - -
Binary Position | 111 | 000 | 000
Octal Value | 7 | 0 | 0
705 - Owner has all permissions / Group none / Others read and execute
Recommended by some providers for the site directory if it's inaccessible (message: "Forbidden...")
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | - - - | r - x
Binary Position | 111 | 000 | 101
Octal Value | 7 | 0 | 5
755 - Owner has all permissions / Others read and execute
Useful for scripts for example and certain website files
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | r - x | r - x
Binary Position | 111 | 101 | 101
Octal Value | 7 | 5 | 5
764 - All permissions for owner / Read, write for group / Read only for others
Sometimes useful for website files belonging to www-data group
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | r w - | r - -
Binary Position | 111 | 110 | 100
Octal Value | 7 | 6 | 4
774 - All permissions for owner and group / Read only for others
Useful for certain files on a local development server
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | r w x | r - -
Binary Position | 111 | 111 | 100
Octal Value | 7 | 7 | 4
775 - All permissions for owner and group / Read and execute for others
Very practical for simplifying website management in development on a local server (in the media folder)
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | r w x | r - x
Binary Position | 111 | 111 | 101
Octal Value | 7 | 7 | 5
777 - All permissions for everyone
Strongly discouraged! But may be necessary for CMS cache locally (for example) on a LAMP server
User Type | Owner | Group | Others
--- | --- | --- | ---
Permissions | r w x | r w x | r w x
Binary Position | 111 | 111 | 111
Octal Value | 7 | 7 | 7
To modify permissions of a directory and its subdirectories, use the recursive function -R
Modify the directory /var/www/html/mysite with permissions changed to 755:
```sh
sudo chmod -R 755 /var/www/html/mysite
```
## Display Directory Permissions
The permissions of files in a directory can be displayed using the "ls -l" command
Display permissions of files in the /var/www/html/mysite directory:
```sh
ls -l /var/www/html/mysite
```
## Permission Format
The permission format is a list of 10 symbols.
The 1st symbol is either "-" or "l" or "d", indicating whether it's:
- a file (-)
- a link (l)
- or a directory (d)
Then follow the three groups of three permission symbols (rwx-). For example:
`-rw-r--r--` means it's a file with permissions set to 644
`drwx------` means it's a directory with permissions set to 700
`lrwxrwxrwx` means it's a link with permissions set to 777
## The Advantage of CHown
To avoid chmod 666 (or worse, 777), CHown allows you to change the file owner.
If you want to reclaim ownership rights on an entire folder and you are the user "martin":
```sh
sudo chown -R martin /path/to/folder
```
Recover permissions on the entire folder:
```sh
sudo chmod -R 755 /path/to/folder
```