File Permissions aka Access Modes in Linux

Β·

3 min read

File Permissions aka Access Modes in Linux

Hey there πŸ‘‹πŸ»! In this blog, we will deep dive into the Linux file permissions and how to change the mode of a file or directory using chmod command in Linux.

Sometimes, we may encounter some issues like when opening a file or a directory it says permission denied. This is because you don't have read access to those. Or sometimes we can't write to a file because we don't have write permission and if unable to execute a file like a script (.sh) file then we can say we don't have execute permission to that file.

To change file permission(or change mode) , you must be the owner of a file or directory.

Introduction

In Linux, we use ls -l to list all the information of files and directories in long list format i.e -l.

$ ls -l
-rw-r--r-- 1 <USER_NAME>  1857 Jun 11 02:22 test.txt   
mode           owner      size    date      file/folder name

-rw-r--r-- is the file permission. Permission uses a total of 10 bits. The first bit tells about its kind. For example, if it is - then it's a normal file and if d then it's a directory. And rest bits are for read, write and execute permissions for different owners, each has 3 bits. Here, rw- for user, r-- for group and r-- for others (follow this sequence). Note, we first write read(r), write(w) and then execute(x).

File Ownership

We have three categories for owners of a file - User, Group, and Others.

  • User - Default owner.
  • Group - Collection of users. A user belonging to a group would have the same permission as other members in the group.
  • Others - Users that are not a part of User and Group come under this category.

File Permission or Access Mode

We already saw that there are three permissions for an owner - r, w and x.

  • r - Open and read file.
  • w - Modify file.
  • x - Run an executable file.

Ways to Change Mode using chmod

There are two ways to change modes/permissions:

1. Symbolic mode

Users, groups and others are represented by u, g and o respectively. And we use +, - and = operators to modify permissions.

+ -> Adds permissions, - -> Removes permissions, = -> Sets permissions

Let's understand this with some examples.

Syntax - chmode <permission> <filename>

From the above example -rw-r--r--, let's say we want to add write w permission to group g owner.

chmod g+w test.txt
-rw-r--r--  ➑ -rw-rw-r--

To remove r read permission from others o.

chmod o-r test.txt
-rw-rw-r--  ➑ -rw-rw----

To add write w and execute x permissions to other o.

chmod o+wx test.txt
-rw-rw-r--  ➑ -rw-rw-rwx

To set only read r permission to g.

chmod g=wx test.txt
-rw-rw-rwx  ➑ -rw-wx-rwx

We can also combine the commands in a single command -

chmod u+x,o+wx,g=wx test.txt
-rw-r--r--  ➑ -rwx-wxrwx

2. Numeric mode

In this mode, we represent permissions in numbers. 4, 2, 1 -> r, w, x respectively.

read(r) write(w) execute(x)
4 2 1
Let's take this permission -rw-r---x, to represent this in numeric format, add 4 (r) and 2(w) for user, add 4 (r) for group, and only add 1 (x) for others, so 6->u, 4->g and 1->o. So, 641 is the numeric mode of the permission. We want to add write and execute permissions to group and execute permission to user. So we'll add 2 (for write) and 1 (for execute) to group i.e; (2+1) is added to 4 (current value for group) and add 1 (for execute) to user. So 771 is now the numeric mode of the permission. To apply it, we use the same command.

chmod 771 test.txt
-rw-r---x ➑ -rwxrwx--x

Thanks for reading this articleπŸ˜„. If you liked it, please do share!

Β