Autorizzazione corretta per le cartelle del sito, predefinite e dei file?


10

Devo solo sapere se questi permessi sono corretti:

site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555

5
Non è possibile rispondere a questa domanda senza sapere quale sia l'utente predefinito: group nei file e in quale utente e gruppi viene eseguito il server Web. Dovrebbe essere chiuso come "poco chiaro quello che stai chiedendo". In alternativa, come duplicato di: drupal.stackexchange.com/questions/373/…
Free Radical

Risposte:


14

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.


3
Mentre votato e accettato, questa non è una buona risposta. La domanda è incompleta e non c'è modo di sapere se questa risposta è giusta per la configurazione dei PO (o per chiunque altro). L'unica cosa positiva è il link.
Free Radical

Per non parlare della directory è siti, non sito. : D
Ryan Szrama,

5

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.


Assicurati di leggere l'intero post e i commenti.
mpdonadio

E incollare questo file dove? In quale directory?
Bruno Vincent,

3

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


2

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 ~/.drushsottodirectory ed eseguirlo semplicemente drush file-permissionsmentre ti trovi in ​​qualsiasi sottodirectory del sito Drupal funzionante.

E 'bootstrap tuo sito Drupal, verifica la presenza di file_private_path, file_public_pathe 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


Sarebbe bello portare il modulo su Drupal 8
Benedikt

il modulo non modifica le autorizzazioni per la cartella tmp. È intenzionale? Nella mia configurazione tmp è impostato su site / default / tmp e nessuna modifica di autorizzazione è applicata a quella directory.
Kirking,

0

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.