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/…
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
Copie isso em um arquivo e nomeie-o como "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 <<-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)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
HELP
exit0}# 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
shift
doneif[-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
exit1fiif[-z "${drupal_user}"]||[ $(id -un ${drupal_user}2>/dev/null)!="${drupal_user}"];then
printf "Please provide a valid user.\n"
print_help
exit1fi
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.
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
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.
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
Respostas:
Na verdade, as permissões devem ser
Veja as 3 principais respostas a esta pergunta para obter alguns detalhes.
fonte
Do manual oficial do Drupal :
Copie isso em um arquivo e nomeie-o como "fix-permissions.sh"
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.
fonte
Foi assim que decidi definir permissões para minha instância do Drupal:
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
Outras permissões devem ser padrão.
Guia completo de instalação do Drupal: http://itvictories.com/node/21
fonte
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
~/.drush
subdiretório e simplesmente executá-lodrush file-permissions
enquanto estiver em qualquer subdiretório do site Drupal em funcionamento.Ele bootstraps seu site Drupal, verifica
file_private_path
,file_public_path
e 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
fonte
Como os outros caras mencionaram, a permissão correta é
Os comandos apropriados para alcançar as regras mencionadas são os seguintes, na raiz do site do Drupal
fonte