Mon travail sur la création d'un nouveau site Drupal sur un serveur consiste à faire en sorte qu'un utilisateur fasse partie du groupe de serveurs Web (généralement Apache) et que cet utilisateur soit propriétaire de tous les fichiers Drupal. Sur Ubuntu, ce sont les commandes pour obtenir cette configuration:
# Create a new example user, setting up /var/www/example as their home dir.
useradd -s /bin/bash -d /var/www/example -m example
# Now add that user to the Apache group. On Ubuntu/Debian this group is usually
# called www-data, on CentOS it's usually apache.
usermod -a -G www-data example
# Set up a password for this user.
passwd example
Une fois cette configuration configurée, je me connecte en tant qu'utilisateur et installe Drupal sous / var / www / example / docroot ou similaire, puis crée le répertoire des fichiers à la main et copie le fichier settings.php. Puisque nous nous connectons en tant qu'exemple d'utilisateur avant de copier dans Drupal, la propriété et les autorisations de nos fichiers doivent automatiquement être correctement configurées sur tous les fichiers et scripts Drupal principaux (y compris les fichiers .htaccess).
su - example
cd docroot
cp sites/default/default.settings.php sites/default/settings.php
# Temporarily give the web server write permissions to settings.php
chgrp www-data sites/default/settings.php
chmod g+w sites/default/settings.php
Maintenant, configurons le répertoire de fichiers.
# Create the directory.
mkdir sites/default/files
# Now set the group to the Apache group. -R means recursive, and -v means
# verbose mode.
chgrp -Rv www-data sites/default/files
Ensuite, nous allons configurer les autorisations pour que le serveur Web puisse toujours écrire dans tous les fichiers de ce répertoire. Nous faisons cela en utilisant 2775 dans notre commande chmod. Le 2 signifie que l'identifiant du groupe sera préservé pour tout nouveau fichier créé dans ce répertoire. Cela signifie que www - data sera toujours le groupe sur tous les fichiers, garantissant ainsi que le serveur Web et l'utilisateur auront toujours les droits d'écriture sur tous les nouveaux fichiers placés dans ce répertoire. Le premier 7 signifie que le propriétaire (exemple) peut utiliser R (Lecture), W (Écriture) et X (Exécuter) tous les fichiers de ce fichier. Le second 7 signifie que ce groupe (www-data) peut également RW et X n’importe quel fichier de ce répertoire. Enfin, le 5 signifie que les autres utilisateurs peuvent utiliser les fichiers R et X, mais pas écrire.
chmod 2775 sites/default/files
S'il y a des fichiers existants dans ce répertoire, assurez-vous que le serveur Web dispose d'une autorisation d'écriture.
chmod g+w -R sites/default/files
Drupal est maintenant prêt à être installé. Lorsque vous avez terminé, il est TRÈS important de revenir à settings.php et de vous assurer que tous les utilisateurs ont uniquement des autorisations de lecture.
chmod 444 sites/default/settings.php
C'est ça! Cette configuration garantit que vous évitez toute situation dans laquelle l'utilisateur qui détient le répertoire ou le serveur Web ne peut pas écrire / modifier / supprimer des fichiers dans le répertoire des fichiers.