> ## Content Index
> Fetch the complete content index at: https://snubmonkey.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Chmod +rwx Command on Linux Systems. (Permissions)
- URL: https://snubmonkey.com/chmod-command-on-linux/
- Published: 2021-02-25T09:07:00.000Z
- Updated: 2025-04-16T22:59:45.000Z
- Description: In Linux and Unix-like (UN*X) operating systems, a set of flags associated with each file determines who can access that file, and how they can access it. These flags are called file permissions or modes, as in "mode of access."
- Author: yannick Coffi
- Tags: linux 🐧, security 🦾🦿, how to 🪄

The command name `chmod` stands for "change mode." It restricts the way a file can be accessed. In Linux, access to the files is managed through the file permissions, attributes, and ownership. This ensures that only authorized users and processes can access files and directories. That makes `chmod` command one of the most powerful and important commands in Linux.

## Understanding File Permissions

On a Linux system, each file and directory is assigned access rights for:

- The file owner.
- The group members.
- Others (everybody else).

and three file permissions types apply to each class:

- The read permission.
- The write permission.
- The execute permission. (i.e. run the file as a program).

This allows you to specify which users are allowed to read the file, write to the file, or execute the file.

File permissions can be viewed using the `ls` command:

`$ ls -l monkey.txt`

```zsh
Output
-rw-r--r-- 12 snubmonkey batman 24.0K Feb  12 08:28 monkey.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type:
	                                - indicates regular file
                                        d indicates directory
```

In our above example (`rw-r--r--`) means that the file owner has read and write permissions (`rw-`), the group and others have only read permissions (`r--`).

The first character identifies the type of entry that is being listed. If it is a dash (`-`) it is a file. If it is the letter `d` it is a directory.

The next nine characters represent the settings for the three sets of permissions.

- The first three characters show the permissions for the user who owns the file (*user permissions*).
- The middle three characters show the permissions for members of the file’s group (*group permissions*).
- The last three characters show the permissions for anyone not in the first two categories (*other permissions*).

> There are two ways to represent these permissions: with symbols (Alphanumeric characters), or with Octal numbers (the digits 0 through 7).

## Symbolic (Text) Method #

In the symbolic mode, you can modify the permissions of a specific owner. It makes use of mathematical symbols to modify the Unix file permissions.

```zsh
Operator   Description
+	   Adds a permission to a file or directory
-	   Removes the permission
=	   Sets the permission and overrides the permissions set earlier.
```

The various owners are represented as -

```zsh
User Denotations
u	user/owner
g	group
o	other
a	all
```

Now, let's look into an example so we can have a better understanding.

```zsh
$ ls -l monkey.txt
-rw-r--r-- 12 snubmonkey batman 24.0K Feb  12 09:22 monkey.txt
```

\*let's set permissions to the 'other' users.

```zsh
$ chmod o=rwx monkey.txt
  ls -l
-rw-r--rwx 12 snubmonkey batman 24.0K Feb  12 09:24 monkey.txt
```

\*let's set an execute permission to the usergroup.

```zsh
$ chmod g+x monkey.txt
  ls -l
-rw-r-x-rwx 12 snubmonkey batman 24.0K Feb  12 09:27 monkey.txt
```

\*let's remove 'read' permission for 'user'.

```zsh
$ chmod u-r monkey.txt
  ls -l
--w-r-x-rwx 12 snubmonkey batman 24.0K Feb  12 09:29 monkey.txt
```

\*let's Remove the read, write, and execute permission for all users except the file’s owner:

```zsh
$ chmod og-rwx monkey.txt
  ls -l
--w------- 12 snubmonkey batman 24.0K Feb  12 09:31 monkey.txt
```

\*let's add the file’s owner permissions to the permissions that the members of the file’s group have  

```zsh
$ chmod g+u monkey.txt
  ls -l
--w--w---- 12 snubmonkey batman 24.0K Feb  12 09:34 monkey.txt
```

## Octal (numbers) Method #

Simply put, in this mode, file **permissions are not represented as characters but as a three-digit octal number**.

The table below gives numbers for all permissions types.  

```zsh
Number	Permission Type		 Symbol
0	No Permission		 ---
1	Excetute                 --x
2	Write		         -w-
3	Excetue + Write		 -wx-
4	Read			  r--
5	Read + Excecute           r-x
6	Read + Write              rw-
7	Read + Write + Excecute   rwx
```

\*let's check the current file and the `chmod` permissions command in action.

```zsh
  ls -l
--w--w---- 12 snubmonkey batman 24.0K Feb  12 09:44 monkey.txt
```

\*let's `chmod 764` and check permissions again.

```zsh
chmod 764 monkey.txt
-rwxrw-r-- 12 snubmonkey batman 24.0K Feb  12 09:46 monkey.txt
```

'764' octal code says the following:

- Owner can read, write and execute
- Usergroup can read and write
- World can only read

**This is shown as '-rwxrw-r--'**

## Recursively Change the File’s Permissions

To recursively operate on all files and directories under the given directory, use the `-R` (`--recursive`) option:

For example, to change the permissions of all files and subdirectories under the `/var/www` directory to `755` you would use:

```
chmod -R 755 /var/www
```

This is how you can change user permissions in Linux on file by assigning a Symbolic value or an octal number.   
Thank you for reading and hope you've learned something.  
To learn more about `chmod` type `man chmod` in terminal.