The Basics of the chmod Command

In this guide, we will be showing you how to make use of the chmod command in Linux.

chmod Command in Linux

In Linux, you will often need to make use of the chmod command. Chmod stands for “Change Mode” and is used to modify the permissions of files and directories in a Linux based system.

By using this command, we can set the read, write, and execute permissions for all three of the permission groups (Owner, Group and Other) in Linux.

The command is relatively simple to use and involves using chmod, followed by the permissions you want to set, then the name of the directory or file you want to modify.

chmod [OPTIONS] PERMISSIONS FILE

With the chmod command, there are two different notations that you can utilize to specify the permissions that you want to set.

You can either use numeric (Number based) or symbolic (Letter based) notation to define your permissions with this command.

In this chmod guide, we will run you through both of these notations so that you can decide when its best to use one over the other.

Table of Contents

Changing Permissions Using Numeric Notation

Using numeric notation, you will be making use of numbers such as 777 to represent permissions.

With numeric notation, each of the three digits represents an individual permission group.

The order that these permission groups are defined is the following.

  • The first digit is the permissions for the Owner of the file/directory.
  • The second digit represents the permissions for the Group that owns the file/directory.
  • The third digit holds the permissions for the Other permission group.

With numeric notation each permission is assigned a numerical value, you can see the value assigned to each of the permissions by looking at our table below.

NumberUsageDescription
4Read permissionAllows reading the contents of a file or directory.
2Write permissionAllows creating new files in a directory or modifying the contents of a file.
1Execute permissionAllows you to “run” a file.
0No PermissionsSetting a permission group to 0 means they won’t be able to do anything with the file/directory.

If you want to set multiple permissions to a file or directory, then you need to add the numeric values of each permission together.

Calculating Numeric Permissions

In this section, we are going to run you through some quick examples of adding together the permission values to set your desired permissions.

Calculating the numeric permissions is a reasonably straightforward process to understand and is as simple as just adding the numeric value of each permission together.

Owner Permissions Example: Read | Write | Execute

For example, if we wanted to assign the owner the read (4), write (2), and execute (1) permissions, we need to add the numeric value that represents each permission.

4 + 2 + 1 = 7

Group Permissions example: Read | Execute

Likewise, if we only want to give the group the right to read (4) and execute (1) the file, then we need to add those two numeric values together.

4 + 1 = 5

Other Permissions example: Read

Now to finish it up, let’s say that we wanted all other users to only be able to read (4) the file, then we need to use the read permission value in its place.

4 = 4

Putting it All Together

Now to get our final permissions mode that we can set using the chmod command, we need to put each of our permission group’s values next to each other.

The order these values should be put together is the following: Owner, Group, Other.

754

Numeric Permission Table

Alternatively, you can make use of our table below to see the different number combinations and the permissions that they set.

NumberPermissionsrwx
0No Permissions‐‐‐
1Execute Only‐‐x
2Write Only‐w‐
3Write and Execute‐wx
4Read Onlyr‐‐
5Read and Executer‐x
6Read and Writerw‐
7Read, Write and Executerwx

As you can see there isn’t a huge amount of combinations that you have to remember.

With a bit of practice, you will be able to write down the correct number for the permissions you want without having to do any calculations.

Reading Numeric Permissions

Once you have a basic understanding of the numeric notation system, reading the permissions becomes relatively simple.

To work out the permissions that are set, we need to do the opposite of what we did earlier.

This means we need to subtract each of the permissions numerical values to see if it has been set.

For example, let’s use the number 7 as our permission value.

permission = 7

To start, we should first check to see if the read permission has been set as it has the largest numerical value.

If the permission value is greater than or equal to 4, then it contains the read permission.

Subtract 4 from your value. If your value is not 0, then you can proceed to check for both the Write permission and the Read permission.

permission = 7 - 4 = 3

Next, we can check if the value contains the write permission. If the value is equal to or greater than 2, then it will have the write permission.

Subtract 2 from your value and continue if the resulting value is not equal to 0.

permission = 3 - 2 = 1

Finally, if your value is equal to 1 after all other subtractions, then we can tell that the execute permission is set.

Dealing with the full permission string is just as simple.

All you need to do is separate the three digits into there three separate groups to work out the permissions being set for the Owner, Group, and Other permission groups.

The more you practice this, the faster you will be able to work out what permissions are being set based on the numerical value.

Example of using Numeric Notation With chmod

In this section, we are going to run you through an example of using numeric notation with the chmod command to set permissions.

You will find that numeric notation is especially useful when you want to set permissions for all of the three permission groups at once.

For this example, we are going to be setting the following permissions.

  • Owner – Read (4), Write (2), Execute (1) – 7
  • Group – Read (4), Execute (1) – 5
  • Other – Read (4) – 4

To add multiple permissions to a group, you need to add the numeric value of the permissions together.

Using the values we have calculated for each permission group, we can run the following command to set all of the permissions for a file called numerictest.

chmod 754 numerictest

As you can see, the Owner group has the Read(4), Write(2), and Execute(1) permissions set. Combining the numeric value of each of these permissions gives us the value 7.

Next, the Group permission group has the Read (4)and Execute (1) permissions set, combining these values means we set these using the value 5.

Finally for the Other permission group we just need to use the value for the Read permission, which is 4.

Changing Permissions Using Symbolic Notation

Instead of using the numeric notation with the chmod command, you can also make use of the symbolic notation.

chmod [GROUP][OPERATOR][PERMISSIONS] examplefile

Permission Groups with Symbolic Notation

With the symbolic notation, permissions are applied to permission groups based on four different letters

The chmod command uses these letters to apply the permissions to the desired permission group.

You can see the group that each letter represents by using the table below.

LetterGroupExplanation
uOwnerFile/Directory Owner
gGroupFile/Directory Group Owner
oOtherUsers who aren’t the owner or a member of the group that owns the file
aAllEquivalent to using ugo. Sets permissions for all three groups.

You can combine letters to modify multiple permission groups at once.

For example, to modify both the Owner(u) and Other(o) permission groups, you can use their letters like so: uo.

Permission Operators with Symbolic Notation

Next, we need to look at the three different operators that you can use for the symbolic notation.

These operators dictate how the chmod command should apply the permissions to the specified permission groups.

OperatorExplanation
+Adds the specified permissions to the permission groups
Removes the specified permissions from the permission groups
=Replaces all permissions of the permission groups with the ones that are specified.

These operators are relatively simple to understand and work very similarly to basic arithmetic.

Permissions with Symbolic Notation

Finally, we need to take a look at the letters that represent the permissions we want to utilize.

You will be familiar with these letters if you have followed our file permissions in Linux guide.

Using the table below, you can see the individual letter that represents each of the three permissions.

Permission LetterPermissionExplanation
rRead PermissionAllows the group to read a file or list the contents of a directory
wWrite PermissionAllows the group to write to the file or directory
xExecute PermissionAllows the group to execute a file or list the contents of a directory.

Now that we have an understanding of all the different operators that we can use and the letters that represents the permission groups and permissions, we can use these in practice.

Examples of Symbolic Notation with chmod

The symbolic notation is incredibly simple to use and is especially useful when you want to add or remove specific permissions without making changes to the other permissions.

Unlike numeric notation, you do not need to specify all permissions for each of the permission groups.

Adding a Permission using Symbolic Notation

To show you this behavior, we are going to add the write permission to the Owner permission group for a file called examplefile.

chmod u+w examplefile

Breaking this down, you can see that we use the u character to specify that we want to modify the owner permission group.

Next, we use the addition(+) operator as we want to add the permission to our group.

Finally, we use w to specify that we want to add the write permission.

Removing a Permission using Symbolic Notation

Removing a permission using symbolic notation is just as easy as adding a permission.

For this example command, we are going to remove the read permission from the other permission group for a file called nowrite.

chmod o-r nowrite

Breaking down this command, we start by using the letter o to specify that we want to modify the Other permission group.

We then proceed to use the minus(-) operator to tell the command that we want to remove the specified permission from our group.

Our final letter, r specifies the permission we want to remove, is the read permission.

Setting the permissions using Symbolic Notation

While you are able to add or remove specific permissions, you can also set the permissions using symbolic notation.

By setting permissions, you are replacing all existing permissions with the ones specified.

For our example command, we are going to give the group permission group, read and write privileges on a file called readandwrite.

chmod g=rw readandwrite

As you can see, we start by first specifying the group permission group by utilizing the g letter.

We then use the equals (=) operator to tell the chmod command that we want to set our permission groups permissions to the specified ones.

Finally, we specify the two permissions that we want to set by using the letter r for the read permission and the letter w for the write permission.

You can see how you can easily specify more than one permission by just combining the letter for each different permission.

Using Multiple Permission Groups with Symbolic Notation

The last thing that we need to touch on for symbolic notation with the chmod command is how you can use multiple groups.

Luckily this is a super simple process and involves combining the letter that represents each permission group.

For example, if we wanted to add the execute permission to both our Owner and Group permission groups for a file called usergroup then we can use the following.

chmod ug+x usergroup

You can see that all we needed to do to add the permissions to two different groups was to combine the letter for each permission group.

Here we used u for the owner permission group followed by g for the group permission group.

We then proceed to do everything just as we did in the previous examples, using the addition operator (+) to add a new permission then using the letter x to specify that we want to add the execute permission.

Hopefully, at this point, you will now have an idea of how to use numeric or symbolic notation with the chmod command.

If you have run into any issues or need any assistance, then feel free to drop a comment below.

Leave a Reply

Your email address will not be published. Required fields are marked *