Drupal File Permissions for non-shared hosting

All directories in root should be set to 750 with setgid set, to do so cd into it and run

sudo find  . -type d -exec chmod 2750 {} \ ;

All files in root should be set to 640 , to do so run 

sudo find . -type f -exec chmod 640 {} \ ;

Now remove the setgid bit on sites/default and all its sub folders by running

sudo chmod -R g-s  sites/default

And change permissions on sites/default/files to 770 for directories and 660 for files

sudo chmod sites/default/files 770

sudo find sites/default/files -type d -exec chmod 770 {} \ ;

sudo find sites/default/files -type f -exec chmod 660 {} \ ;

And very important, change settings.php file to read only 

sudo chmod sites/default/settings.php 400

Note on some shared hosting you will need more permissive permissions