In the last post, we explored Controlling Processes in Linux System where we explored how to control processes running in our System.
Today we are going to explore one of the most important topics in the Linux System: Permissions.
What are permissions and why should we know about them?
Our Linux Systems are built on top of the Unix system, so they are not just multitasking but also a multi-user system.
This is not something that has been recently introduced but has been deeply embedded in the Linux systems from the early days.
What does a multi-user system mean?
In a multi-user system, more than one person can be using the computer at the same time.
For example, if you are connected to the internet, the remote users can access your system using Secure Shell(ssh).
Okay, this feature provide users with great power to login from anywhere.
To quote a great man:
With Great POWER comes Great Responsibility
Sorry just could not miss the opportunity to say this 😁
Okay let's get back to the topic since multiple users can log in into the same system along with a malicious user, how can you make sure that your files are secure?
This is where Permissions comes into the picture.
Permissions are divided into two major parts:
- Access Rights
Files and directories in the Linux system is assigned 3 types of owner
- Owner (the user who created the file/directory)
- Group (to which the owner belongs to)
- Others (all other users)
2. Access Rights
Files and directories in the Linux system have 3 access rights defined for all the 3 owners discussed above.
- Read access denoted by r
- Write access denoted by w
- Execution access denoted by x
Okay so we have just found the answer what are Permissions and why should we know about them.
Now, the next question that comes into our mind is how can we check Permissions for a file or directory?
There are two easy ways we can check for Permissions on a file/directory
1. Using the UI
Let's start with the human-readable way
To check Permissions for a file/directory all we need to do is
- Right-click on a file
- Select properties from the menu
- There we have 4 tabs Basic, Permissions Open with and Image(Type of file)
- Select the Permissions tab
After selecting Permissions we see the following data
In the above image,
- Owner has a value of me since I was the one who created the file
Access provided for Owner is read and write
Group has a value of yash since that is my username
Access for the group is also read and write
Others have read-only access.
To change Permissions, the user can open the drop-down menu for each category and choose the desired permission.
Aren't we missing something? Where is the execution access?
If we look below the Access of others we can see that there is another field name Execute.
Execute allows us to check whether this file is executable or not and since in the above image checkbox is not ticked we can say that the file is not executable.
2. Using our Terminal
To find Permissions for files all we need to do is use
ls command along with
In the above example, we used the command
ls -l to list all the files and directories along with Permissions.
But to understand how to read Permissions better let's take an example of a single file
In the above example, we used the command
ls -l I_O\ Redirection\ In\ Linux\ System.png to find the permissions for the respective files
In the Output -rw-rw-r-- 1 yash yash 75880 the first 10 letters are file attributes
The first letter describes the type of file, most common file types are
- specifies a regular file
d specifies a directory
l describes a symbolic link
After the type of file, we have the rest of 9 characters to describe access permissions i.e. rwx( read, write and execute).
In the above example, we have
rw - Read and Write for Owner
rw - Read and Write for Group
r - Read Only for all the Others
Similarly, we can have many different combinations of Permissions. Let's look at a few
|The Meaning of Attributes
|A regular file that is readable and writable for Owner and Group but only readable for others
|A directory that is readable and writable only for Owner and for Group and Others it's only readable
|A regular file that is readable, writable, and executable by the Owner. No one else has any access.
|A regular file that is readable, writable, and executable by the Owner. The file can only be read and executed by everybody else.
So, this is how we can read Permissions for a file/directory.
This is it for this post. In the next post, we will explore how to add/edit these permissions from Terminal.
See you in the funny papers 🚀