Permissão correta para pastas de site, padrão e arquivos?


10

Eu só preciso saber se essas permissões estão corretas:

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

5
Esta pergunta não pode ser respondida sem saber qual é o usuário padrão: group nos arquivos e qual usuário e grupos seu servidor web executa. Deve ser fechado como "claro o que você está perguntando". Como alternativa como uma duplicata de: drupal.stackexchange.com/questions/373/…
Free Radical

Respostas:


13

Na verdade, as permissões devem ser

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

Veja as 3 principais respostas a esta pergunta para obter alguns detalhes.


3
Embora votada e aceita, essa não é uma boa resposta. A pergunta está incompleta e não há como saber se essa resposta é correta para a configuração dos OPs (ou para qualquer outra pessoa). A única coisa boa é o link.
Free Radical

Sem mencionar que o diretório é sites, não site. : D
Ryan Szrama

5

Do manual oficial do Drupal :

Copie isso em um arquivo e nomeie-o como "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"

Agora execute este script como: sudo bash fix-permissions.sh --drupal_path = seu / drupal / path --drupal_user = your_user_name

Viola! Suas permissões são corrigidas automaticamente.


Certifique-se de ler toda a postagem e os comentários.
mpdonadio

E cole este arquivo onde? Em que diretório?
Bruno Vincent

3

Foi assim que decidi definir permissões para minha instância do Drupal:

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

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 o apache 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 neste 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.

Outro ponto é definir as permissões corretas para as suas configurações.php

chmod 444 sites/default/settings.php

Outras permissões devem ser padrão.

Guia completo de instalação do Drupal: http://itvictories.com/node/21


2

A resposta selecionada não é muito correta, especialmente quando existem poucas incógnitas por lá, no entanto, Aleks a explicou extensivamente, e é uma abordagem muito semelhante à adotada nos sites do Drupal.

Além disso, pensei em compartilhar meu script aqui também, mas como um módulo Drupal, que criei há algum tempo. Você pode colocá-lo no ~/.drushsubdiretório e simplesmente executá-lo drush file-permissionsenquanto estiver em qualquer subdiretório do site Drupal em funcionamento.

Ele bootstraps seu site Drupal, verifica file_private_path, file_public_pathe define-los para o usuário Apache correto e grupo. O usuário / grupo do Apache está sendo determinado automaticamente, portanto, não depende do usuário especificá-los manualmente ou de codificá-los em um arquivo de script.

Página do módulo: https://www.drupal.org/project/file_permissions


Seria ótimo portar o módulo para o Drupal 8
Benedikt

O módulo não altera a permissão da pasta tmp. Isso é intencional? Na minha configuração, tmp é definido como site / default / tmp e nenhuma alteração de permissão é aplicada a esse diretório.
precisa saber é o seguinte

0

Como os outros caras mencionaram, a permissão correta é

Todos os Drectories -> 755
Todos os arquivos -> 755
sites / padrão -> 755 (esta regra de substituição neste diretório)
sites / default / files -> 775 (essa regra de substituição para este diretório e seu conteúdo)
sites / default / settings. php -> 444 (esta regra de substituição deste arquivo)

Os comandos apropriados para alcançar as regras mencionadas são os seguintes, na raiz do site do 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.