Devo solo sapere se questi permessi sono corretti:
site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555
Devo solo sapere se questi permessi sono corretti:
site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555
Risposte:
In realtà le autorizzazioni dovrebbero essere
sites -> 755
sites/default -> 755
sites/default/files -> 775
sites/default/settings.php -> 444
Vedi le prime 3 risposte a questa domanda per alcuni grandi dettagli.
Dal manuale ufficiale di Drupal :
Copia questo in un file e chiamalo come "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"
Ora esegui questo script come: sudo bash fix-permissions.sh --drupal_path = your / drupal / path --drupal_user = your_user_name
Viola! Le tue autorizzazioni vengono riparate automaticamente.
Ecco come ho deciso di impostare le autorizzazioni per la mia istanza di Drupal:
mkdir sites/default/files
chgrp -Rv apache sites/default/files
chmod 2775 sites/default/files
Lo facciamo usando 2775 nel nostro comando chmod. Il 2 indica che l'id del gruppo verrà conservato per tutti i nuovi file creati in questa directory. Ciò significa che Apache sarà sempre il gruppo su tutti i file, garantendo così che il server Web e l'utente disporranno sempre delle autorizzazioni di scrittura per tutti i nuovi file inseriti in questa directory. Il primo 7 indica che il proprietario (esempio) può R (Leggi) W (Scrivere) e X (Esegui) tutti i file qui. Il secondo 7 indica che il gruppo (dati www) può anche RW e X qualsiasi file in questa directory. Infine, il 5 indica che altri utenti possono file R e X, ma non scrivere.
Un altro punto è impostare le autorizzazioni corrette per settings.php
chmod 444 sites/default/settings.php
Altre autorizzazioni devono essere predefinite.
Guida completa all'installazione di Drupal: http://itvictories.com/node/21
La risposta selezionata non è del tutto corretta, specialmente quando ci sono alcune incognite lì, tuttavia Aleks l'ha spiegata abbastanza ampiamente, ed è un approccio molto simile che ho adottato sui siti Drupal.
Inoltre, ho pensato di condividere anche qui la mia sceneggiatura, ma come modulo Drupal, che ho creato qualche tempo fa. Puoi posizionarlo nella ~/.drush
sottodirectory ed eseguirlo semplicemente drush file-permissions
mentre ti trovi in qualsiasi sottodirectory del sito Drupal funzionante.
E 'bootstrap tuo sito Drupal, verifica la presenza di file_private_path
, file_public_path
e li mette a correggere utenti Apache e di gruppo. L'utente / gruppo Apache viene determinato automaticamente, quindi non dipende dall'utente che li specifica manualmente o che li ha codificati in un file di script.
Pagina del modulo: https://www.drupal.org/project/file_permissions
Come hanno detto gli altri ragazzi, l'autorizzazione corretta è
Tutte le Drettorie -> 755
Tutti i file -> 755
siti / default -> 755 (questa regola di override su questa directory)
siti / default / file -> 775 (questa regola di override su questa directory e i suoi contenuti)
siti / default / settings. php -> 444 (questa regola di sostituzione per questo file)
I comandi appropriati per raggiungere le Regole citate sono i seguenti, alla radice del tuo sito Web Drupal
find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
chmod 444 sites/default/settings.php
chmod 775 -R sites/default/files