A script to configure WordPress file permissions based on recommendations from https://wordpress.org/support/article/hardening-wordpress/#file-permissions
Compatible with WordPress 6.8.2 and includes enhanced security options.
bash fix-wordpress-permissions.sh [-y] [-s] [wordpress root directory] [wordpress owner] [wordpress group] [webserver group]
-y, --yes dont ask for confirmation
-s, --secure use enhanced security permissions (770/660 instead of 775/664)
prevents other users from accessing WordPress files
# Uses default path /var/www/html/wordpress and www-data user/group
bash fix-wordpress-permissions.sh# Fix permissions for WordPress in /var/www/mysite
bash fix-wordpress-permissions.sh /var/www/mysite# Custom path with specific owner, using default groups
bash fix-wordpress-permissions.sh /home/user/wordpress wpuser# Complete specification of all parameters
bash fix-wordpress-permissions.sh /var/www/html wpuser wpgroup apache# Use enhanced security permissions (770/660 instead of 775/664)
bash fix-wordpress-permissions.sh -s /var/www/html# Run without asking for confirmation (useful for scripts/automation)
bash fix-wordpress-permissions.sh -y /var/www/html# Enhanced security mode without confirmation
bash fix-wordpress-permissions.sh -y -s /var/www/html wpuser wpgroup apache- Directories: 755 (owner: rwx, group: rx, others: rx)
- Files: 644 (owner: rw, group: r, others: r)
- wp-content directories: 775 (owner: rwx, group: rwx, others: rx)
- wp-content files: 664 (owner: rw, group: rw, others: r)
- wp-config.php: 660 (owner: rw, group: rw, others: none)
- Directories: 750 (owner: rwx, group: rx, others: none)
- Files: 640 (owner: rw, group: r, others: none)
- wp-content directories: 770 (owner: rwx, group: rwx, others: none)
- wp-content files: 660 (owner: rw, group: rw, others: none)
- wp-config.php: 660 (owner: rw, group: rw, others: none)
The enhanced security mode prevents other users on the server from accessing WordPress files, providing better security in shared hosting environments.