Il est impossible de répondre à cette question sans savoir quel est le groupe utilisateur par défaut sur les fichiers et quel utilisateur et quels groupes votre serveur Web exécute. Il doit être clôturé comme "pas clair ce que vous demandez". Alternativement en tant que doublon de: drupal.stackexchange.com/questions/373/…
Bien que voté et accepté, ce n'est pas une bonne réponse. La question est incomplète et il n'y a aucun moyen de savoir si cette réponse convient à la configuration des OP (ou à toute autre personne). La seule chose bonne à ce sujet est le lien.
Radical gratuit du
Sans parler du répertoire, ce sont les sites, pas le site. : D
Copiez ceci dans un fichier et nommez-le "fix-permissions.sh"
#!/bin/bashif[ $(id -u)!=0];then
printf "This script must be run as root.\n"exit1fi
drupal_path=${1%/}
drupal_user=${2}
httpd_group="${3:-www-data}"# Help menu
print_help(){
cat <<-HELPThis script is used to fix permissions of a Drupal installation
you need to provide the following arguments:1)Path to your Drupal installation.2)Usernameof the user that you want to give files/directories ownership.3) HTTPD group name (defaults to www-data forApache).Usage:(sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUPExample:(sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data
HELPexit0}# Parse Command Line Argumentswhile[ $# -gt 0 ]; docase"$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";exit1esac
shiftdoneif[-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_helpexit1fiif[-z "${drupal_user}"]||[ $(id -un ${drupal_user}2>/dev/null)!="${drupal_user}"];then
printf "Please provide a valid user.\n"
print_helpexit1fi
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"
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 RW 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
La réponse choisie n'est pas tout à fait correcte, surtout quand il y a peu d'inconnues, mais Aleks l'a expliqué assez longuement, et c'est une approche très similaire que j'adopte sur les sites Drupal.
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 le ~/.drushsous-répertoire et l'exécuter simplement drush file-permissionstout en étant dans n'importe quel sous-répertoire du site Drupal en fonctionnement.
Il Bootstraps votre site Drupal, vérifie file_private_path, file_public_pathet les met à l' utilisateur correct Apache et le groupe. L'utilisateur / groupe Apache est déterminé automatiquement, il ne dépend donc pas de l'utilisateur qui les spécifie manuellement ou qui les codent en dur dans un fichier de script.
le module ne change pas l'autorisation pour le dossier tmp. Est-ce intentionnel? Dans ma configuration, tmp est défini sur site / default / tmp et aucune modification d'autorisation n'est appliquée à ce répertoire.
kiranking
0
Comme les autres gars l'ont mentionné, l'autorisation correcte est
Tous les répertoires -> 755
Tous les fichiers -> 755
sites / par défaut -> 755 (cette règle de priorité sur ce répertoire)
sites / par défaut / fichiers -> 775 (cette règle de priorité sur ce répertoire et son contenu)
sites / par défaut / paramètres. 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
Réponses:
En fait, les autorisations doivent être
Voir les 3 meilleures réponses à cette question pour de grands détails.
la source
Extrait du manuel officiel de Drupal :
Copiez ceci dans un fichier et nommez-le "fix-permissions.sh"
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.
la source
Voici comment j'ai décidé de définir des autorisations pour mon instance Drupal:
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 RW 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
D'autres autorisations doivent être par défaut.
Guide d'installation Drupal complet: http://itvictories.com/node/21
la source
La réponse choisie n'est pas tout à fait correcte, surtout quand il y a peu d'inconnues, mais Aleks l'a expliqué assez longuement, et c'est une approche très similaire que j'adopte sur les sites Drupal.
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 le
~/.drush
sous-répertoire et l'exécuter simplementdrush file-permissions
tout en étant dans n'importe quel sous-répertoire du site Drupal en fonctionnement.Il Bootstraps votre site Drupal, vérifie
file_private_path
,file_public_path
et les met à l' utilisateur correct Apache et le groupe. L'utilisateur / groupe Apache est déterminé automatiquement, il ne dépend donc pas de l'utilisateur qui les spécifie manuellement ou qui les codent en dur dans un fichier de script.Page du module: https://www.drupal.org/project/file_permissions
la source
Comme les autres gars l'ont mentionné, l'autorisation correcte est
Les commandes appropriées pour atteindre les règles mentionnées sont les suivantes, à la racine de votre site Web Drupal
la source