web-dev-qa-db-fra.com

Autorisation correcte pour les dossiers de site, par défaut et de fichiers?

J'ai juste besoin de savoir si ces autorisations sont correctes:

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

En fait, les autorisations doivent être

sites -> 755
sites/default -> 755
sites/default/files -> 775
sites/default/settings.php -> 444

Voir les 3 meilleures réponses à cette question pour de grands détails.

13
keithm

De manuel officiel de Drupal :

Copiez ceci dans un fichier et nommez-le "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"

Maintenant, exécutez ce script comme: Sudo bash fix-permissions.sh --drupal_path = votre/drupal/chemin --drupal_user = votre_nom_utilisateur

Alto! Vos autorisations sont automatiquement fixées.

5
InspiredCoder

Voici comment j'ai décidé de définir des autorisations pour mon Drupal:

mkdir sites/default/files
chgrp -Rv Apache sites/default/files
chmod 2775 sites/default/files

Pour ce faire, nous utilisons 2775 dans notre commande chmod. Le 2 signifie que l'ID de groupe sera conservé pour tous les nouveaux fichiers créés dans ce répertoire. Cela signifie qu'Apache sera toujours le groupe sur tous les fichiers, garantissant ainsi que le serveur Web et l'utilisateur auront toujours les autorisations d'écriture sur tous les nouveaux fichiers placés dans ce répertoire. Le premier 7 signifie que le propriétaire (exemple) peut R (lire) W (écrire) et X (exécuter) tous les fichiers ici. Le second 7 signifie que le groupe (www-data) peut également R W et X tous les fichiers de ce répertoire. Enfin, le 5 signifie que d'autres utilisateurs peuvent R et X fichiers, mais pas écrire.

Un autre point est de définir les autorisations correctes pour vos settings.php

chmod 444 sites/default/settings.php

D'autres autorisations doivent être par défaut.

Complet Drupal Guide d'installation: http://itvictories.com/node/21

3
Aleks

La réponse choisie n'est pas tout à fait correcte, surtout quand il y a peu d'inconnues, cependant Aleks l'a expliqué assez longuement, et c'est une approche très similaire que j'adopte = Drupal sites.

Aussi, je pensais que je partagerais mon script ici aussi, mais en tant que module Drupal, que j'ai créé il y a quelque temps. Vous pouvez le placer dans ~/.drush sous-répertoire et exécutez simplement drush file-permissions tout en étant dans un sous-répertoire du site Drupal).

Il amorce votre Drupal, vérifie file_private_path, file_public_path et les définit pour corriger l'utilisateur et le groupe Apache. L'utilisateur/groupe Apache est déterminé automatiquement, il ne dépend donc pas de l'utilisateur qui les spécifie manuellement ou les fait coder en dur dans un fichier de script.

Page du module: https://www.drupal.org/project/file_permissions

2
Turek

Comme les autres gars l'ont mentionné, l'autorisation correcte est

Toutes les drectories -> 755
Tous les fichiers -> 755
sites/par défaut -> 755 (cette règle de remplacement de ce répertoire)
sites/default/files -> 775 (cette règle de remplacement pour ce répertoire et son contenu)
sites/default/settings.php -> 444 (cette règle de remplacement pour ce fichier)

Les commandes appropriées pour atteindre les règles mentionnées sont les suivantes, à la racine de votre site 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
0
Yusef