Secure your files with proper Linux permissions.
File permissions control who can read, write, or execute files on your server. Proper permissions are crucial for both security and functionality—too restrictive and your site won't work, too permissive and you're vulnerable to attacks.
Read (r) = 4
View file contents
Write (w) = 2
Modify file contents
Execute (x) = 1
Run as program
Permissions are represented by three-digit numbers (e.g., 755, 644). Each digit represents permissions for:
Examples:
755 = rwxr-xr-x
Owner: 7 = read (4) + write (2) + execute (1)
Group: 5 = read (4) + execute (1)
Others: 5 = read (4) + execute (1)
644 = rw-r--r--
Owner: 6 = read (4) + write (2)
Group: 4 = read (4)
Others: 4 = read (4)
600 = rw-------
Owner: 6 = read (4) + write (2)
Group: 0 = no permissions
Others: 0 = no permissionsNever use 777 permissions in production! This makes files writable by anyone and is a major security risk.
Files:
All files: 644
wp-config.php: 600 or 440
.htaccess: 644Directories:
All directories: 755
wp-content: 755
wp-content/uploads: 755
wp-content/themes: 755
wp-content/plugins: 755Special Cases:
# Change single file
chmod 644 filename.php
# Change directory
chmod 755 directory-name
# Change all files in directory
chmod 644 /path/to/directory/*
# Change all subdirectories only
find /path/to/directory -type d -exec chmod 755 {} \;
# Change all files only
find /path/to/directory -type f -exec chmod 644 {} \;Symptoms: Can't upload files, can't save changes
Causes: Directory not writable, file owned by wrong user
Solutions: Set directory to 755, set files to 644, ensure correct ownership
# Set uploads directory to writable
chmod 755 wp-content/uploads
chmod -R 755 wp-content/uploads/*# Set correct permissions
chmod 755 wp-content wp-content/plugins wp-content/themes
find wp-content/plugins -type f -exec chmod 644 {} \;
find wp-content/themes -type f -exec chmod 644 {} \;Check both file and directory permissions. Directory or file not accessible.
Never Use 777:
777 = rwxrwxrwx means everyone can read, write, and execute. Major security vulnerability.
Secure Configuration Files:
# WordPress
chmod 600 wp-config.php
# Joomla
chmod 600 configuration.php
# Drupal
chmod 600 sites/default/settings.phpProtect Sensitive Files:
chmod 644 .htaccess
chmod 600 .htpasswdCheck Current Permissions (SSH):
# List with permissions
ls -la
# Check specific file
stat filename.php
# Find files with specific permissions
find . -type f -perm 777Find World-Writable Files (Security Check):
# Find files with 777
find /home/username/public_html -type f -perm 0777
# Find directories with 777
find /home/username/public_html -type d -perm 0777#!/bin/bash
# fix-wordpress-permissions.sh
# Set directories to 755
find /home/username/public_html -type d -exec chmod 755 {} \;
# Set files to 644
find /home/username/public_html -type f -exec chmod 644 {} \;
# Set wp-config.php to 600
chmod 600 /home/username/public_html/wp-config.php
# Set .htaccess to 644
chmod 644 /home/username/public_html/.htaccess
echo "Permissions fixed!"