Before starting to learn about File Permissions in Linux Let’s understand Linux first, Linux is a clone of UNIX, Linux is a clone of UNIX, the multi-user operating system which can be accessed by many users simultaneously.
We have 2 levels of authorization in Linux.
In this blog, we discuss file permissions in Linux.
Every file and directory on your Unix/Linux system is assigned 3 types of the owner, given below.
- User:- A user is the owner of the file. By default, the person who created a file becomes its owner. Hence, a user is also sometimes called an owner.
- Group:- A user- group can contain multiple users. All users belonging to a group will have the same access permissions to the file. Suppose you have a project where a number of people require access to a file. Instead of manually assigning permissions to each user, you could add all users to a group, and assign group permission to file such that only this group members and no one else can read or modify the files.
- Other:- Any other user who has access to a file. This person has neither created the file, nor he belongs to a user group who could own the file. Practically, it means everybody else. Hence, when you set permission for others, it is also referred to as set permissions for the world.
Now, the big question arises how does Linux distinguish between these three user types so that a user ‘A’ cannot affect a file which contains some other user ‘B’s’ vital information/data. It is like you do not want your colleague, who works on your Linux computer, to view your images. This is where Permissions set in, and they define user behavior.
Let us understand the Permission system on Linux.
Every file and directory in your UNIX/Linux system has the following 3 permissions defined for all the 3 owners discussed above.
Read: This permission give you the authority to open and read a file. Read permission on a directory gives you the ability to lists its content.
Write: The write permission gives you the authority to modify the contents of a file. The write permission on a directory gives you the authority to add, remove and rename files stored in the directory. Consider a scenario where you have to write permission on file but do not have write permission on the directory where the file is stored. You will be able to modify the file contents. But you will not be able to rename, move or remove the file from the directory.
Execute: In Windows, an executable program usually has an extension “.exe” and which you can easily run. In Unix/Linux, you cannot run a program unless the execute permission is set. If the execute permission is not set, you might still be able to see/modify the program code(provided read & write permissions are set), but not run it.
Let’s try with the terminal.
-rw-rw-r– Represent the file type and access permissions.
the first ‘–‘ implies that we have selected a file.
if it were a directory, d would have been shown.
‘d’ Represent the directory.
The characters are easy to remember.
r = read permission
w = write permission
x = execute permission
– = no permission
Now the question is How can I change the file or directory permission?
We can use the ‘chmod’ command which stands for ‘change mode’. Using the command, we can set permissions (read, write, execute) on a file/directory for the owner, group and the world.
$chmod <permissions> <file name>
We have two way to chang the permission.
- Absolute mode
- Symbolic mode
In this mode, file permissions are not represented as characters but a three-digit octal number.
The table below gives numbers for all permissions types.
|5||Read + Execute||r-x|
|7||Read + Write +Execute||rwx|
Let’s see the chmod command in action.
check the current file permissions using.
$ls -l test.txt
let’s change the file permission to 764
In the above-given terminal window, we have changed the permissions of the file ‘sample to ‘764’.
‘764‘ absolute code says the following:-
- The owner can read, write and execute
- Usergroup can read and write
- The world can only read
This is shown as “-rwxrw–r-“
Hope this helps you to understand how you can change the permissions on file by assigning an absolute number.
Let’s understand the Symbolic Mode.
In the Absolute mode, you change permissions for all 3 owners. In the symbolic mode, you can modify permissions for a specific owner. It makes use of mathematical symbols to modify the file permissions.
|+||Adds permission to a file or directory|
|–||Removes the permission|
|=||Sets the permission and overrides the permissions set earlier|
And the various owners are represented as
Setting permission to the other users.
$chmod o=rwx test.txt
Adding execute permission to the user group.
$chmod g+x test.txt
Removing Read permission for user.
$chmod u-r test.txt
Changing Ownership and Group:-
For changing the ownership of a file/directory, you can use the following command:
In case you want to change the user as well as group for a file or directory use the command
$chown user:group <filename>
In case you want to change group-owner only, use the command
$chgrp group_name filename
‘chgrp’ stands for change group.
Special thanks to https://runwithcode.blogspot.com/
for such a wonder-fill article