Documentation Level: 
Intermediate
Documentation Status: 
Incomplete
  • Enables the ability to download modules from BackdropCMS.org (via the Installer module).
  • Enables the ability to updates to modules through the Backdrop user interface (via the Installer module).
  • Will eventually be required for enabling automatic self-updates (as planned for future versions of Backdrop).
  • May be the only option on shared hosting, where the web user and FTP/SSH user are the same.

An example of the root of a Backdrop installation with looser permissions would look like this:

drwxrwxr-x  8 kris kris  4.0K Aug 27 08:43 core/
drwxrwxr-x 14 kris kris  4.0K Aug 14 17:52 files/
-rw-rw-r--  1 kris kris  5.9K Jul 22 16:47 .htaccess
-rwxrwxr-x  1 kris kris   578 Aug 27 08:43 index.php
drwxrwxr-x  2 kris kris  4.0K May 24 21:44 layouts/
drwxrwxr-x 19 kris kris  4.0K Aug  2 10:11 modules/
drwxrwxr-x  5 kris kris  4.0K Aug 27 08:43 profiles/
-rw-rw-r--  1 kris kris  3.9K Aug 26 14:40 README.md
-rw-rw-r--  1 kris kris  1.2K May 24 21:44 robots.txt
-rw-rw-r--  1 kris kris   15K Aug 27 08:43 settings.php
drwxrwxr-x  3 kris kris  4.0K May 24 21:44 sites/
drwxrwxr-x  2 kris kris  4.0K May 24 21:44 themes/

This is typical of a shared hosting server, where everything (including the files directory) is owned by the same user. On some shared hosts, executed PHP files (such as index.php) need to be marked executable. Executable PHP files within Backdrop include:

index.php
core/install.php
core/update.php
core/cron.php

And there is a directory of executable shell scripts under core/scripts, but these are not commonly needed to run a Backdrop site. Looser permissions that match the example above may be set on your server with the following commands:

# Switch to the root directory of Backdrop first.
cd ~/public_html

# Set the owner and group for all files.
chown -R kris:kris . 

# Set the permissions for files and directories.
find . -type f -exec chmod 664 '{}' \;
find . -type d -exec chmod 775 '{}' \;

# Mark executable PHP scripts as executable.
chmod 774 index.php
chmod 774 core/install.php
chmod 774 core/update.php
chmod 774 core/cron.php