Permissions for Drupal Files and Files

I have a fracture time trying to figure out how I can set up Drupal folders and files. I search around drupal.org, but keep coming up with information on how WWW data needs access to the "sites" and "files" folders and how "settings.php" needs some amazing permissions.

But I need a list like this:

/ = 744 or drwxr-r--
/ includes / = ...
/ misc / = ...
/ modules / = ...
/ profiles / = ...
/ scripts / = ...
/ sites / = ...
/ sites / all / = ...
/ sites / default / = ...
/sites/default/settings.php = 444?
/ sites / default / files / = ...

I don’t think I need someone to catalog all the files, folders and permissions for me. I assume that I can simply set the root folder permissions to "apply to private items", and then fix several folders and files that require special settings.

I would really appreciate any contributions that might lead me to common sense! :)

Scott

+4
source share
2 answers

the default installation on my local computer has

-rw-r - r-- all php files

drwxr-xr-x directories

drwxrwxr-x file folder

-r - r - r-- .php settings file

+5
source

I was late for an answer, but I ran into this problem and found a way out. From the Drupal Official Directory :

Copy this to the file and name it as "fix-permissions.sh"

#!/bin/bash if [ $(id -u) != 0 ]; then printf "This script must be run as root.\n" exit 1 fi drupal_path=${1%/} drupal_user=${2} httpd_group="${3:-www-data}" # Help menu print_help() { cat <<-HELP This script is used to fix permissions of a Drupal installation you need to provide the following arguments: 1) Path to your Drupal installation. 2) Username of the user that you want to give files/directories ownership. 3) HTTPD group name (defaults to www-data for Apache). Usage: (sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUP Example: (sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data HELP exit 0 } # Parse Command Line Arguments while [ $# -gt 0 ]; do case "$1" in --drupal_path=*) drupal_path="${1#*=}" ;; --drupal_user=*) drupal_user="${1#*=}" ;; --httpd_group=*) httpd_group="${1#*=}" ;; --help) print_help;; *) printf "Invalid argument, run --help for valid arguments.\n"; exit 1 esac shift done if [ -z "${drupal_path}" ] || [ ! -d "${drupal_path}/sites" ] || [ ! -f "${drupal_path}/core/modules/system/system.module" ] && [ ! -f "${drupal_path}/modules/system/system.module" ]; then printf "Please provide a valid Drupal path.\n" print_help exit 1 fi if [ -z "${drupal_user}" ] || [ $(id -un ${drupal_user} 2> /dev/null) != "${drupal_user}" ]; then printf "Please provide a valid user.\n" print_help exit 1 fi cd $drupal_path printf "Changing ownership of all contents of "${drupal_path}":\n user => "${drupal_user}" \t group => "${httpd_group}"\n" chown -R ${drupal_user}:${httpd_group} . printf "Changing permissions of all directories inside "${drupal_path}" to "rwxr-x---"...\n" find . -type d -exec chmod u=rwx,g=rx,o= '{}' \; printf "Changing permissions of all files inside "${drupal_path}" to "rw-r-----"...\n" find . -type f -exec chmod u=rw,g=r,o= '{}' \; printf "Changing permissions of "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n" cd sites find . -type d -name files -exec chmod ug=rwx,o= '{}' \; printf "Changing permissions of all files inside all "files" directories in "${drupal_path}/sites" to "rw-rw----"...\n" printf "Changing permissions of all directories inside all "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n" for x in ./*/files; do find ${x} -type d -exec chmod ug=rwx,o= '{}' \; find ${x} -type f -exec chmod ug=rw,o= '{}' \; done echo "Done settings proper permissions on files and directories" 

Now run this script as:

  sudo bash fix-permissions.sh --drupal_path=your/drupal/path --drupal_user=your_user_name 

Viola! Your permissions are automatically recorded.

+2
source

Source: https://habr.com/ru/post/1336544/


All Articles