Do you think IIT Guwahati certified course can help you in your career?
No
Introduction
How many of you like watching F.R.I.E.N.D.S?
Many of you are probably humming the theme song right now, aren't you?
So, do you remember Monica?
Even if you've never watched the series or are wondering who Monica is, let's get a short introduction to her.
Monica loves everything perfect (according to her rules, of course), so she doesn't like people touching her stuff or moving them around. In other words, without her permission, no one can mess with Monica's arrangements, like where the green ottoman should be.
Now, on a computer, data is stored in files. Everything is in a file, whether it's the program that boots the system or your assignment in a word doc. So here, the Linux operating system is like Monica and doesn't give everyone permission to access all such files. This gives rise to the idea of file permissions in Linux.
In this article, we'll learn about the different file permissions in Linux and how to change them when needed.
File Permissions in Linux
To begin with, we must first learn about the different file permissions in Linux.
The three file permissions in Linux are read, write and execute. Let's see what they are.
Read
Suppose we are reading a book. In the story, one of our favorite characters dies, and we are unhappy about that. So, can we change the storyline of the book?
Of course not, since we are a reader.
Similarly, specific files may be permitted to be read-only in Linux. Thus, we can only view such files.
Write
With the knowledge of the read permission and the name of this one, you've probably already guessed what this permission does.
The write permission in Linux allows a user to modify the contents of a file.
Here, we must remember that the permissions for a file and a directory are given separately. So, the write permission for a file only allows us to edit the contents of the file. If the directory also has permission to write, then we can rename, move, add or remove files from it.
Note: To understand the difference between a file and a directory, consider a folder with papers. The folder is the directory, while each paper is a file.
Execute
While downloading any software on your computer, have you noticed that the files we download are executable files with a .exe extension? This extension means that the files can be run as a program.
In Linux, the execute permission is given to such files instead of such a file extension.
Let's see an example now that we know what the file permissions in Linux are.
Examples of File Permissions in Linux
Theoretically, knowing what the file permissions in Linux are is no fun. So let's see the different file permissions in Linux.
Note: You must have Linux installed in your system for the following steps. You may also use online Linux terminals.
In the terminal, change the directory to one with some files. In the example below, there is only one file on the desktop, so that is the directory used.
Run the following command
ls -l FILE_NAME.EXTENSION
Note: The command mentioned above is the general one in case many files are in the directory. Since only one file is in the example shown below, only ls -l has been used.
The output obtained should be similar to this.
Here, the output is "-rw-rw-r- -". Let's break it down to understand the meaning.
The first "-" means that we are checking the permissions of a file. Had we done so for a directory, there would have been a "d" instead. Next, the first "rw-" represents the file owner's permissions. It means the owner has permission to read and write the file but not execute it. The second "rw-" represents the group's permission and is the same as the owner's. The last "r- - "denotes the permission given to other users, who are only permitted to read.
Now that we know about file permissions in Linux let's learn how we can change them.
Changing File Permissions in Linux
Suppose you're cleaning your room, and you find a small place in the cupboard empty. So you decide to stock up on snacks over there, but you worry someone may find them before you. What would you do in such a situation?
Lock the cupboard barring everyone's access, right?
In Linux, you can do the same for files. You can change the file permissions in Linux.
The general syntax to do that is
chmod PERMISSIONS FILE_NAME.EXTENSION
Here, we can give permission in two ways
(i) Absolute (numeric) mode
(ii) Symbolic mode
Let's see what both of them are.
Absolute (Numeric) Mode of Permission
In the absolute mode, permissions are represented as numeric. For this reason, it is also called the numeric mode. Eight different permissions are represented using the numbers from 0 to 7, so it is also known as the octal permission representation.
The table below shows the different permissions and their corresponding numeric value.
Number
Permission
Symbol
0
No permission
- - -
1
Execute
- -x
2
Write
-w-
3
Execute and Write
-wx
4
Read
r- -
5
Read and Execute
r-x
6
Read and Write
rw-
7
Read, Write and Execute
rwx
Let us now change the permission of a file and see how it works.
Here, we have first checked the permission of our file. It is initially "-rw-rw-r- -." Then we run the chmod command with the permission as "764." On checking from the table, the corresponding permission is rwx for the owner, rw- for the groups, and r - - for others. So our output should be, "-rwxrw-r- -." This matches the result obtained above.
This is all about the absolute mode of permissions. Let's see the symbolic mode now.
Symbolic Mode of Permissions
As the name suggests, the symbolic mode of permissions is representation using symbols, but what symbols?
You may have noticed that the symbols for the corresponding permissions were given in the table provided for the absolute mode of permissions. Apart from those symbols, there are a few more in the symbolic mode.
Firstly, in the absolute mode, we simultaneously changed the permissions for the owner, groups, and others. Here, we can only change the permissions for one of them at a time. Thus, there are symbols representing the owner, groups, and others.
Symbol
User
u
owner
g
groups
o
others
a
all
Next, the symbolic mode gives the provision to add, remove and set permissions. The symbols for those are.
Symbol
Description
+
Adds permission
-
Removes permission
=
Sets permission
Just looking at these seems confusing, doesn’t it? Let’s run some commands to get a clear picture.
Adding Permissions
Here, we can see that the initial permission is “-rw-rw-r- -.” The chmod command run is “u+x.” So, we are adding the execute permission for the owner. Thus, the new permission should be “-rwxrw-r- -” which corresponds with our output.
Removing Permissions
Here, we can see that the initial permission is “-rwxrw-r- -.”
Notice that the change in permission from our previous command is still reflected.
The chmod command run is “g-r.” So, we are removing the read permission for the groups. Thus, the new permission should be “-rwx-w-r- -” which corresponds with our output.
Setting Permissions
Here, we can see that the initial permission is “-rwx-w-r- -.”
Notice that the change in permission from our previous command is still reflected.
The chmod command run is “o=rw-.” So, we are giving others permission to read and write. Thus, the new permission should be “-rwx-w-rw-” which corresponds with our output.
With this, we have completed learning about file permissions in Linux.
Frequently Asked Questions
What are the three types of file permissions in Linux?
The three file permissions in Linux are Read, Write and Execute.
How do we check the file permissions?
The Linux command to check the file permissions is “ls -l FILE_NAME.EXTENSION”.
What are the different modes of changing file permissions in Linux?
There are two ways to change the file permissions in Linux - absolute (numeric) mode or symbolic mode.
What does chmod 644 mean?
“chmod 644” is the absolute mode of permissions. It means that the owner has read and write permissions, while groups and others have only read permissions.
What does chmod o=rwx mean?
“chmod o=rwx” is the symbolic mode of permissions. It means that others' permission is set to read, write and execute.
Conclusion
At the end of this article, we finish learning about file permissions in Linux. We also learned how to check the file permissions and change them. What’s next now?
File permissions are just a small part of Linux. Apart from it, there are lots more to learn about, but how will we do that?