-
Get in touch
- Servers 99 611 Gateway Blvd ,
South San Francisco ,
CA 94080 United States - sales@servers99.com
- Whatsapp : +1 312 910 5075
- Support : +1 234 285 8020
- Skype Name : live:.cid.fceb43fa6d632b51
Securing your Linux server starts with mastering file permissions. File and directory permissions define who can read, write, or execute content and when configured correctly, they become a powerful layer of defense against unauthorized access, data leaks, and privilege escalation attacks.
In this tutorial, we’ll guide you step by step on how to tune Linux permissions for maximum server security, using best practices followed by hosting providers, data centers, and system administrators.
Why File Permissions Matter in Linux
Linux uses a tree-like file system structure, which helps isolate and control access at every level. Each file or folder is associated with three types of users
- User (Owner)– the creator or assigned owner
- Group– a collection of users with similar access
- Others– all other system users
Permissions define who can do what with a file:
- r (read) = 4
- w (write) = 2
- x (execute) = 1
The sum of these values determines the final permission
eg:
rw-
= 6r-x
= 5rwx
= 7
Viewing File Permissions in Linux
To see permissions of files and directories, use
Copy Code
ls -l
Example Output
Copy Code
-rw-rw-r-- 1 sshuser sshuser 8 Feb 17 07:25 myfile.txt
Here’s the breakdown
-rw-rw-r--
:permission string
- First character:
-
=file(d
= directory) - Next 3: owner permissions
- Next 3: group permissions
- Last 3: others' permissions
Changing File Permissions with chmod
The chmod
command changes permissions. You can use numeric values or symbolic representation.
Example
Copy Code
chmod 655 myfile.txt
This changes the permission to:
- Owner: read + write (6)
- Group: read + execute (5)
- Others: read + execute (5)
Copy Code
ls -l
-rw-r-xr-x 1 sshuser sshuser 8 Feb 17 07:25 myfile.txt
Recommended Permission Settings for Hosting
To protect files and directories on your Linux server, follow these default secure permissions
- Files:
644
— readable by everyone, writable by owner - Directories:
755
— accessible by everyone, writable only by owner
Set Secure Permissions Recursively
Copy Code
# Set all files to 644
find . -type f -exec chmod 644 {} \;
# Set all directories to 755
find . -type d -exec chmod 755 {} \;
Easy Permission Fix in cPanel Servers
If you manage a cPanel server, use the fixperms script:
Step 1: Download the script
Copy Code
wget https://raw.githubusercontent.com/PeachFlame/cPanel-fixperms/master/fixperms.sh
chmod +x fixperms.sh
Step 2: Fix permissions for a specific account
Copy Code
./fixperms.sh -a USERNAME
Step 3: Fix all accounts
Copy Code
./fixperms.sh -all
This is a fast and reliable way to restore secure permissions across your cPanel environment.
Advanced: Special Permissions in Linux
Linux also supports special permissions that go beyond basic rwx
.
1. setuid (Set User ID on Execution)
Allows users to run a file as the file’s owner.
Copy Code
chmod u+s /path/to/file
If set correctly, you'll see an s
in place of x
:
Copy Code
-rwsr-xr-x 1 root root 12345 Jan 1 12:00 securefile
If the file is not executable, you’ll see a capital S
, indicating an incorrect setup.
2. setgid (Set Group ID on Execution)
Allows users to execute a file with the file group’s privileges or ensures all new files in a directory inherit the group ID.
Copy Code
chmod g+s /path/to/file_or_dir
3. Sticky Bit
Prevents users from deleting or renaming files they don’t own, commonly used in shared directories like /tmp
.
Copy Code
chmod +t /opt/shared
Sticky bit appears as a t in the permission string:
Copy Code
drwxrwxrwt 9 root root 4096 Jan 1 12:00 /tmp
Restrict Root Access and "su" Command
In hosting environments, allowing regular users to switch to root using su can be a major security risk.
To prevent this:
- Remove users from the wheel group in your Linux or cPanel system.
- Disable
su
for all users except admin roles. - Use
sudo
with strict access rules instead.
Summary: Best Practices for Linux File Permissions
Task | Command |
---|---|
View permissions | ls -l |
Set file to 644 | chmod 644 filename |
Set folder to 755 | chmod 755 foldername |
Recursively fix files | find . -type f -exec chmod 644 {} \; |
Recursively fix folders | find . -type d -exec chmod 755 {} \; |
Apply setuid | chmod u+s filename |
Apply setgid | chmod g+s filename |
Apply sticky bit | chmod +t foldername |
Conclusion
Tuning Linux permissions is one of the easiest and most effective ways to secure your hosting environment. Whether you're managing a shared server, a dedicated server, or a cloud instance following permission best practices will minimize risks and prevent privilege abuse.
Need secure dedicated servers with expert-level configuration? Explore our Unmetered Linux Dedicated Servers – optimized for performance and protection.