What File Permissions Mean
File permissions control who can read, write and execute files on the server. They are a basic security and stability layer for any website running on a VPS.
Where Permissions Sit In The Stack
Permissions sit at the operating system and filesystem layer. They affect Nginx, PHP-FPM, WordPress uploads, plugin updates, cache files and sensitive configuration files.
How Permissions Work
Linux permissions usually define access for owner, group and others. Directories need execute permission to be entered. Files need read permission to be served and write permission only when modification is required.
Why Permissions Break Websites
If permissions are too strict, WordPress may fail to upload media, update plugins or write cache files. If permissions are too open, attackers may modify files after exploiting a weak plugin or account.
How To Think About Permissions
Permissions are a balance between function and security. The goal is not to make everything writable. The goal is to give each process only the access it needs.
Infrastructure Layer
VPS / Operating System
Difficulty Level
Beginner
Core Concept
File permissions decide which users and services can read, write or execute website files and directories.
System Role
They protect the filesystem while allowing Nginx, PHP-FPM and WordPress to access the files they need.
How It Works
Linux checks owner, group and permission bits before allowing a process to read, write or execute a file or directory.
Connected Components
Operating system, filesystem, Nginx user, PHP-FPM user, WordPress files, uploads directory, wp-config.php, cache directory.
Common Failure Points
Upload failure, plugin update failure, 403 error, exposed sensitive file, world-writable files, wrong ownership after migration.
Verification Method
Check ownership, directory permissions, file permissions, upload write access, wp-config.php protection and web server error logs.
Basic Commands
ls -la /var/www/example.com;
find /var/www/example.com -type d -maxdepth 2 -ls;
find /var/www/example.com -type f -maxdepth 2 -ls;
stat wp-config.php;
tail -n 50 /var/log/nginx/error.log