SFTP permission denied on files owned by www-data


To set up permissions on /var/www where your files are served from by default:

  1. sudo addgroup webmasters
  2. sudo adduser $USER webmasters
  3. sudo chown -R root:webmasters /var/www
  4. sudo find /var/www -type f -exec chmod 664 {} \;
  5. sudo find /var/www -type d -exec chmod 775 {} \;
  6. sudo find /var/www -type d -exec chmod g+s {} \;
  7. sudo chown -R www-data:webmasters application/cache/ [etc…]

Now log out and log in again to make the changes take hold.

The previous set of commands does the following:

  1. Create a new group called webmasters; all users who need write access to the app files will be added to this group.
  2. adds the current user ($USER) to the webmasters group.
  3. changes the owner of /var/www to root and the group to webmasters group.
  4. adds 644 permissions (-rw-rw-r–) to all files in /var/www.
  5. adds 775 permissions (drwxrwxr-x) to all directories in /var/www.
  6. sets the SGID bit on /var/www and all directories therein; this final point bears some explaining. Note also that you can also put a 2 at the front of your chmod octal (e.g. 2644) to do the same thing.
  7. sets the owner to www-data (Apache’s user) and group of the supplied directory to webmaster. This ensures the directory is writable by Apache and anyone in the webmasters group. Do the same for all other directories that need to be writable.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s