Mi práctica en torno a la creación de un nuevo sitio Drupal en un servidor es tener un usuario que forme parte del grupo del servidor web (generalmente Apache), y que ese usuario sea el propietario de todos los archivos de Drupal. En Ubuntu, estos son los comandos para configurarlo:
# 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
Una vez que tenga eso configurado, iniciaré sesión como ese usuario e instalaré Drupal en / var / www / example / docroot o similar, y luego crearé el directorio de archivos a mano y copiaré el archivo settings.php. Dado que iniciamos sesión como nuestro usuario de ejemplo antes de copiar en Drupal, la propiedad y los permisos de nuestros archivos deben configurarse automáticamente en todos los archivos y scripts centrales de Drupal (incluidos los archivos .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
Ahora configuremos el directorio de archivos.
# 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
A continuación, configuraremos permisos para que el servidor web siempre pueda escribir en cualquier archivo que se encuentre en este directorio. Hacemos esto usando 2775 en nuestro comando chmod. El 2 significa que la identificación del grupo se conservará para cualquier archivo nuevo creado en este directorio. Lo que eso significa es que www - data siempre será el grupo en cualquier archivo, asegurando así que el servidor web y el usuario siempre tendrán permisos de escritura para cualquier archivo nuevo que se coloque en este directorio. Los primeros 7 significan que el propietario (ejemplo) puede R (Leer) W (Escribir) y X (Ejecutar) cualquier archivo aquí. El segundo 7 significa que el grupo (www-data) también puede RW y X cualquier archivo en este directorio. Finalmente, el 5 significa que otros usuarios pueden archivos R y X, pero no escribir.
chmod 2775 sites/default/files
Si hay archivos existentes en este directorio, asegúrese de que el servidor web tenga permisos de escritura.
chmod g+w -R sites/default/files
Ahora Drupal está listo para ser instalado. Cuando termine, es MUY importante volver a settings.php y asegurarse de que todos los usuarios solo tengan permisos de lectura.
chmod 444 sites/default/settings.php
¡Eso es! Esta configuración garantiza que evite cualquier situación en la que el usuario propietario del directorio o el servidor web no pueda escribir / cambiar / eliminar archivos en el directorio de archivos.