Managing file permissions in Linux is essential for maintaining security and controlling access to files and directories. Whether you are a beginner or an experienced user, understanding file permissions ensures that only authorized users can read, write, or execute files. In this blog, we’ll break down Linux file permissions, commands to modify them, and best practices to follow.
Understanding File Permissions in Linux

In Linux, every file and directory has associated permissions that determine who can access them. These permissions are categorized into three levels:
- Owner – The user who owns the file and has full control over it.
- Group – Other users who belong to the same group as the file owner.
- Others – All other users on the system who are neither the owner nor part of the group.
Each file has three types of permissions:
- Read (r) – Allows viewing the file content.
- Write (w) – Allows modifying or deleting the file.
- Execute (x) – Allows running the file as a program or script.
You can check a file’s permissions by using the ls -l command:
ls -l filename
Example output:
-rwxr-xr-- 1 user group 1024 Feb 25 10:00 sample.sh
- rwx (Owner): Read, write, and execute.
- r-x (Group): Read and execute.
- r-- (Others): Read only.
Modifying File Permissions in Linux
Using chmod
The chmod command is used to change file permissions.
Numeric Method
Permissions are represented by numbers:
- Read = 4
- Write = 2
- Execute = 1
To set permissions, sum up the values and apply them:
chmod 755 filename
This sets permissions as:
- Owner: Read, write, execute (7)
- Group: Read, execute (5)
- Others: Read, execute (5)
Symbolic Method
You can also use symbols to modify permissions:
chmod u+x filename # Add execute permission to the owner
chmod g-w filename # Remove write permission from the group
chmod o+r filename # Give read permission to others
Using chown
The chown command changes file ownership:
chown user:group filename
Example:
chown john:developers script.sh
Using chgrp
The chgrp command changes the group ownership:
chgrp developers filename
Advanced File Permissions
Using umask
The umask command sets default permissions for new files and directories:
umask 022
This ensures that new files have rw-r--r-- permissions by default.
Using ACLs (Access Control Lists)
For more granular control, you can use ACLs to assign permissions to specific users:
setfacl -m u:username:rwx filename
getfacl filename
Best Practices for Handling File Permissions
- Use the least privilege principle: Grant only necessary permissions to users to enhance security.
- Avoid chmod 777 unless absolutely required: It gives full access to everyone, posing security risks.
- Use sudo when modifying system files: Prevents unauthorized changes.
- Check permissions before executing scripts: Ensures correct execution and avoids security vulnerabilities.
- Use ACLs for complex permission needs: Helps in defining user-specific permissions beyond the standard Linux permission model.
- Regularly audit file permissions: Helps maintain a secure system and prevents unauthorized access.
Conclusion
Understanding and managing file permissions in Linux is crucial for security, system administration, and preventing unauthorized access. By using essential commands like chmod, chown, and chgrp, you can effectively control access to files and directories. Advanced techniques such as umask and ACLs can further enhance security and flexibility.
For more tech solutions, visit DirectDeals, a trusted name in software and IT solutions for 26 years of trust. Have questions? Contact us at +1-800-983-2471 or email us at support@directdeals.com for expert guidance. Our team is here to assist you with all your Linux, software, and IT-related needs.