Linux is a multi-user operating system with multiple users accessing the same system. System administrators are responsible for preventing a user from accessing another user’s confidential files. For these reasons, Linux divides authorization into two levels, Ownership and Permission.
File Ownership
Each file and directory has three kinds of owners.
- User: A “user” is the owner of the file. If you create a new file, then you become the owner of the file.
- Group: Every user is a part of the specific “group.” A group contains multiple users, all of whom will have the same access permissions to the file.
- Other: All users and groups in the system are considered as “others.”
Owners are denoted with the following symbols:
- u = user owner
- g = group owner
- o = other
- a = all (user + group + other)
Change the Ownership with chown
To display the ownership of the file index.html in /var/www/html directory, run the following command:
ls -l /var/www/html/index.html
You should get the following output:
-rw-r--r-- 1 www-data www-data 11510 Feb 3 20:25 /var/www/html/index.html
As you can see, the group and user owner of the file is www-data.
A basic syntax to change the ownership of the file is shown below:
chown owner:group filename
To change the owner of the file index.html to root and group to root, run the following command:
chown root:root /var/www/html/index.html
You can use the -R option with the chown command to change the ownership of the directory recursively.
For example, to change the ownership of the directory /var/www/html to www-data as the user and www-data as the group, run the following command:
chown -R www-data:www-data /var/www/html/
This will change the ownership of all files and directories located inside /var/www/html/.
File Permissions
Each file and directory has three types of permission:
- Read: You can view and read the content of the file, but can not edit or modify the file. You can list the content of the directory with “read” permission.
- Write: You can read and edit the content of the file. You can also rename and remove the file. You can add, remove, and rename files in the directory with “read” permission.
- Execute: You can execute the file.
Permissions are defined using octal permissions. These are nine characters created in three sets of three characters:
--- --- --- rwx rwx rwx user group other
Each letter denotes a particular permission:
- r: Read permission
- w: Write permission
- x: Execute permission
- –: No permission set
Permissions are also represented in numeric form as shown below:
- r (read) = 4
- w (write) = 2
- x (execute) = 1
- – (no permission) = 0
- rwx = 4+2+1 = 7
- rw = 4+2 = 6
You can also use mathematical operators to add and remove permissions.
- +: Add the permissions.
- -: Remove the permissions.
- =: Overriding existing permissions.
Change the Permissions with chmod
Chmod stands for change mode, and it is a basic syntax used to change the permissions of the file:
chmod permissions filename
To check the permissions of the file, run the following command:
ls -l /var/www/html/index.html
Output:
-rw-r--r-- 1 www-data www-data 11510 Feb 3 20:25 /var/www/html/index.html
As you can see, the owner of the file has read/write permissions, the group has read permission and the other has read permission.
To add execute permissions to the user, run the following command:
chmod u+x /var/www/html/index.html
Now, verify the permissions with the following command:
ls -l /var/www/html/index.html
Output:
-rwxr--r-- 1 www-data www-data 11510 Feb 3 20:25 /var/www/html/index.html
To add write permissions to group and others, run the following command:
chmod g+w,o+w /var/www/html/index.html
Now, verify the permissions with the following command:
ls -l /var/www/html/index.html
Output:
-rwxrw-rw- 1 www-data www-data 11510 Feb 3 20:25 /var/www/html/index.html
To remove the write permissions from others, run the following command:
chmod o-w /var/www/html/index.html
Now, verify the permissions with the following command:
ls -l /var/www/html/index.html
Output:
-rwxrw-r-- 1 www-data www-data 11510 Feb 3 20:25 /var/www/html/index.html
You can also set the permissions using the octal value. You can use the following values for each permission:
777 = rwxrwxrwx
765 = rwxrw-r-x
654 = rw-r-xr–
For example, change the permissions of the file so that the user can read/write and execute, the group can read and execute and the others can only read the file.
chmod u=rwx,g=rx,o=r /var/www/html/index.html
Or
chmod 754 /var/www/html/index.html
Conclusion
In the above guide, you learned how ownership and permissions work in Linux. You also learned how to set and change the ownership and permissions of the files and directories. I hope you have now enough understanding of file ownership and permissions – try it today on your Linux VPS.