Minha prática em torno da criação de um novo site Drupal em um servidor é ter um usuário que faça parte do grupo de servidores Web (normalmente Apache) e que esse usuário possua todos os arquivos Drupal. No Ubuntu, estes são os comandos para configurar isso:
# 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
Depois de configurada, eu irei entrar como usuário e instalar o Drupal em / var / www / example / docroot ou similar, e depois criar o diretório de arquivos manualmente e copiar o arquivo settings.php. Uma vez que efetuamos login como nosso exemplo de usuário antes de copiar no Drupal, nossa propriedade e permissões de arquivo devem ser automaticamente configuradas corretamente em todos os arquivos e scripts principais do Drupal (incluindo arquivos .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
Agora vamos configurar o diretório de arquivos.
# 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
Em seguida, configuraremos as permissões para que o servidor da Web possa sempre gravar em qualquer arquivo que esteja nesse diretório. Fazemos isso usando 2775 em nosso comando chmod. O 2 significa que o ID do grupo será preservado para quaisquer novos arquivos criados neste diretório. O que isso significa é que www - data sempre será o grupo em qualquer arquivo, garantindo assim que o servidor da Web e o usuário sempre tenham permissões de gravação para quaisquer novos arquivos colocados nesse diretório. Os primeiros 7 significam que o proprietário (exemplo) pode R (Ler) W (Gravar) e X (Executar) qualquer arquivo aqui. O segundo 7 significa que o grupo (www-data) também pode RW e X qualquer arquivo nesse diretório. Finalmente, o 5 significa que outros usuários podem arquivos R e X, mas não podem escrever.
chmod 2775 sites/default/files
Se houver arquivos existentes nesse diretório, verifique se o servidor da Web possui permissões de gravação neles.
chmod g+w -R sites/default/files
Agora o Drupal está pronto para ser instalado. Quando terminar, é MUITO importante voltar ao settings.php e garantir que todos os usuários tenham apenas permissões de leitura.
chmod 444 sites/default/settings.php
É isso aí! Essa configuração garante que você evite situações em que o usuário que possui o diretório ou o servidor da Web não possa gravar / alterar / remover arquivos no diretório de arquivos.