ti-enxame.com

Práticas recomendadas sobre permissões de arquivos / diretórios do Joomla e propriedade em sistemas Linux?

No passado, eu costumava ter problemas com permissões e propriedade de arquivos/diretórios do Joomla em sistemas Linux.

problemas incluídos

  • Não é possível transferir arquivos para o servidor usando programas como o WinSCP.
  • Não é possível instalar extensões, plugins etc. do Joomla.
  • Arquivos e pastas não seguros devido a permissões e configurações de propriedade perigosas.

Quais são as melhores práticas recomendadas para definir permissões e propriedades no Joomla em sistemas Linux?

25
TryHarder

Existem algumas causas possíveis para problemas de permissão de arquivo e pasta na hospedagem Linux.

1. Permissões de arquivo e pasta

As permissões de verificação de pasta estão definidas como 0755 e as de arquivo definidas como 0644. Observe que as permissões de arquivo e pasta podem ser redefinidas para essas configurações padrão de segurança em todo o site, usando a versão gratuita ou paga do Akeeba Admin Tools.

2. PHP Parâmetros

Verifique o parâmetro upload_max_filesize na guia PHP Information no System Information é suficiente. Você geralmente pode substituir a configuração padrão em um ambiente de hospedagem compartilhada através das configurações PHP no cPanel ou em um personalizado php.ini Arquivo.

3. Caminhos incorretos no configuration.php

Você pode ter caminhos incorretos especificados para as pastas tmp e logs. Eles são especificados na Configuração do sistema ou podem ser atualizados diretamente no arquivo configuration.php, se você quiser editar diretamente os arquivos do sistema. Se você não souber qual deve ser o caminho, crie e faça o upload de um arquivo whereami.php (ou semelhante) à pasta raiz do seu site com o seguinte conteúdo:

<?php
  print 'Current folder is ' . dirname(__FILE__);
?>

Navegue para [mywebsite].com/whereami.php para ver o caminho para a pasta raiz.

Depois de ter o caminho correto, lembre-se de excluir o whereami.php Arquivo.

4. Inadequado PHP Manipulador de Arquivos

Sua hospedagem na web pode ser configurada com o manipulador de arquivos padrão PHP, mas idealmente deve estar usando suPHP ou FastCGI ou similar, para que o Joomla possa carregar e executar arquivos usando permissões de arquivo seguras.

Você pode ver o que PHP está sendo usado em System -> System Information -> WebServer to PHP Interface.

Há um bom artigo sobre os méritos relativos de PHP manipuladores de arquivos em: http://boomshadow.net/tech/php-handlers

Em um ambiente de hospedagem compartilhada, você normalmente não tem acesso a alterações, que PHP o manipulador de arquivos está ativado, mas sua empresa de hospedagem na web pode ser capaz de alterar isso para você).

Às vezes, como solução alternativa, as permissões de arquivo e pasta são alteradas para 0777, mas isso coloca o site em um estado vulnerável e as permissões de arquivo 0777 geralmente devem ser evitadas.

Se sua empresa de hospedagem na web não pode ativar o suPHP ou FastCGI, a única outra opção pode ser encontrar uma nova empresa de hospedagem na web.

5. Espaço em Disco

Verifique se você não excedeu sua cota de espaço em disco.

LISTA DE VERIFICAÇÃO DE PROBLEMAS

Quais são as melhores práticas recomendadas para definir permissões e propriedades no Joomla em sistemas Linux?

Veja 1 e 4.

Não é possível transferir arquivos para o servidor usando programas como o WinSCP.

Veja 1, 2, possivelmente 4 e 5.

Não é possível instalar extensões, plugins etc. do Joomla.

Veja 1, 2, 3, 4 e 5.

Arquivos e pastas inseguros devido a permissões perigosas e configurações de propriedade.

Veja 1 e 4.

22
Neil Robertson

Verifique os níveis de permissão, , devem ser 644 e 755 para arquivos e pastas, respectivamente.

Muitas vezes, os níveis de permissão são bons, mesmo quando alguns problemas são enfrentados. Isso significa que você terá que verificar a propriedade e o grupo dos arquivos e pastas específicos . Normalmente, o grupo e a propriedade podem ser alterados para www-data para Apache (usado em servidores Web baseados no Ubuntu).

Sinta-se livre para conferir este interessante documento do Joomla com base em verificação das permissões do arquivo.

12
Shyam

Uma solução fácil para mim é permitir que o PHP seja executado no modo CGI (rápido)) e defina a propriedade do diretório Joomla para o usuário do FTP. Assim, você poderá fazer o upload e substituir arquivos via FTP e Joomla também poderão gravar arquivos.

Uma maneira de fazer isso em um ambiente de hospedagem compartilhada (se for permitido) é adicionar algo assim ao seu arquivo .htaccess:

AddHandler php53-cgi .php

Veja também uma visão geral sobre o modos diferentes .

8
fruppel

As permissões devem ser 644 e 755, conforme explicado por Shyam.

Os problemas que você está enfrentando provavelmente estão relacionados à maneira como o servidor está configurado. Na maioria das vezes, isso acontece em hosts compartilhados nos quais o Apache é executado sob um usuário diferente da sua conta FTP. Como você normalmente carrega o Joomla usando FTP, o Apache não é o proprietário do arquivo e, portanto, não possui as permissões necessárias para alterá-lo.

Existe um modo FTP no Joomla que permite ignorar esse problema. Você pode habilitá-lo na configuração global do Joomla. Ele fará o acesso a todos os arquivos usando o usuário FTP em vez do usuário comum do Apache.

Uma maneira melhor, no entanto, é solicitar ao seu host que corrija o problema. Eles podem configurar o PHP (Apache) para rodar em um usuário especial, que nesse caso deve ser o seu usuário de FTP. Então tudo funcionará bem.

7
Bakual

As permissões devem ser 644 e 755, conforme explicado por Shyam.

No Joomla, você pode evitar todos os problemas mencionados, com os seguintes métodos.

Não é possível transferir arquivos para o servidor usando programas como o WinSCP.

  • Isso pode acontecer devido à permissão de (444) como o Joomla configuration.php tem essa permissão que não permite por padrão (por segurança).
  • Outra situação para esse mesmo erro é quando você transfere um site ou pastas de um servidor para outro.

Não consigo instalar extensões, plugins do Joomla, etc.

  • Isso acontecerá devido a temp/log permissão incorreta da pasta. (Requer 755)

  • Ou outro motivo é temp/log caminho está errado em configuration.php

Arquivos e pastas não seguros devido a permissões perigosas e configurações de propriedade.

  • Isso é mais importante que o Joomla sempre recomenda não usar o 777 para arquivo e pasta, se você não estiver ciente de this .

Espero que ajude ..

7
Jobin Jose

Sim, as permissões devem ser 644 e 755 como explicadas por Shyam , mas os outros pôsteres esquecem de mencionar que isso ocorre se o arquivo pertencer ao seu servidor da Web e o grupo ao qual você pertence.

Por exemplo, no FileZilla, você verá permissões parecidas com esta:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM      www-data myGroup 

As permissões drwxr-xr-x são 755 (apenas ignore o dr principal, portanto é wxr-xr-x). As permissões de leitura valem 4, as permissões de gravação valem 2 e as permissões de execução valem 1 .. portanto, todas elas somam 7, e é isso que o proprietário deste arquivo possui. O grupo possui permissões de leitura e execução, mas não gravação, portanto, elas têm 5 e todos também têm 5 .. tornando as permissões 755.

754 seriam proprietários que liam, escreviam, executavam. Grupo com leitura e execução e todos com apenas permissões de leitura.

No exemplo acima, você pode ver que o proprietário do arquivo é www-data (que é o grupo de servidores Web padrão para muitos servidores Apache) e o grupo é o grupo myGroup, que é o grupo (administradores) ao qual pertenço.

O primeiro número são as permissões dos proprietários, o segundo são as permissões dos grupos e o terceiro número são as permissões de todos. Obviamente, você deve ter cuidado para conceder ao servidor da Web as permissões necessárias ... e garantir que os arquivos que precisam ser bloqueados não possam ser gravados ou executados por qualquer pessoa (o terceiro número). Abaixo está o que os números significam:

Supondo que o servidor da Web possua os arquivos, seu administrador está no grupo e, é claro, todo mundo é o terceiro número.

644: os arquivos com permissões definidas para 644 são legíveis por todos e graváveis ​​apenas pelo proprietário do arquivo/pasta.

755: Os arquivos com permissões definidas para 755 são legíveis e executáveis ​​por todos, mas somente graváveis ​​pelo proprietário do arquivo/pasta.

777: Arquivos com permissões definidas para 777 são legíveis, graváveis ​​e executáveis ​​por todos. Não use esse conjunto de permissões, por motivos de segurança, no servidor da web, a menos que seja absolutamente necessário e apenas temporariamente. É um desastre esperando para acontecer, especialmente se um diretório tiver essas permissões .. significa que qualquer pessoa pode fazer upload de arquivos e executá-los.

Aqui estão os comandos do Linux para configurar o Joomla! permissões recomendadas na linha de comando. Permissões de arquivo Joomla recomendadas

Set ownership:   Sudo chown -R www-data:myName /path/to/your/domain.com
Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 755 {} \;
Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 644 {} \;

NOTA - muitas pessoas mostrarão esses comandos sem o caminho, mas eu prefiro SEMPRE usar o caminho completo, porque se você esquecer de mudar os diretórios para o Joomla raiz! diretório de instalação e execute-os sem o caminho, você acabou de alterar as permissões para cada arquivo e diretório nesse diretório superior e criou uma enorme bagunça.

Depois de executar esses comandos, você precisará corrigir as permissões de qualquer diretório que precise de mais permissões ... por exemplo ... usuários que carregam imagens etc.

SE VOCÊ USAR SOMENTE O JOOMLA! interface e você não tem acesso de administrador ou FTP ao servidor, USE A PROPRIEDADE e PERMISSÕES ACIMA.

PARE AQUI SE VOCÊ É NOVATO. O Abaixo é apenas para pessoas que realmente entendem o que permissões e propriedade fazem.

No entanto, acho que ter a propriedade e as permissões dessa maneira muito impraticáveis, porque gosto de usar o FileZilla e uma linha de comando da sessão do Terminal na maioria das vezes, e carrego muitos arquivos manualmente. Mas não posso sobrescrever nenhum arquivo porque não os possuo e não tenho permissão para escrever. Eu poderia ter o FileZilla logado na conta do servidor web, MAS ... Eu quero que o FileZilla efetue login na minha conta, para que eu possa procurar outros diretórios também, não apenas os arquivos que o servidor da web tem acesso ... SO ... Eu mudo a propriedade e as permissões para isso:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM  drwxr-xr-x    myName www-data

Sou o proprietário e coloco o servidor Web no grupo ... e altero as permissões dos diretórios para 775 e dos arquivos para 664. Torna minha vida muito mais fácil ... mas não a recomendo. todos.

Se você fizer do meu jeito, estes são os comandos:

 Set ownership:   Sudo chown -R myName:www-data /path/to/your/domain.com
 Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 775 {} \;
 Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 664 {} \;  
5
bgies

As outras respostas fornecem uma boa explicação do que deve ser feito. Quero adicionar apenas um script para corrigir as permissões se você já fez o upload de um componente e não pode acessar os arquivos com o ftp.

Nesse caso, eu carregaria este arquivo como fix.php ao servidor FTP e abra-o no navegador: http://example.com/fix.php

<?php
file_fix_directory(dirname(__FILE__));

function file_fix_directory($dir, $nomask = array('.', '..')) {
  if (is_dir($dir)) {
     // Try to make each directory world writable.
     if (@chmod($dir, 0777)) {
       echo "<p>Made writable: " . $dir . "</p>";
     }
  }
  if (is_dir($dir) && $handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
      if (!in_array($file, $nomask) && $file[0] != '.') {
        if (is_dir("$dir/$file")) {
          // Recurse into subdirectories
          file_fix_directory("$dir/$file", $nomask);
        }
        else {
          $filename = "$dir/$file";
            // Try to make each file world writable.
            if (@chmod($filename, 0666)) {
              echo "<p>Made writable: " . $filename . "</p>";
            }
        }
      }
    }

    closedir($handle);
  }

}

Esse script define todas as permissões do arquivo para 666 e todos os diretórios para 777. O mundo gravável é não o melhor conjunto de permissões para um host compartilhado, mas você poderá acessar seus arquivos novamente e poderá defini-lo para os valores corretos com FTP.

4
Harald Leithner

Tarde para a festa. Eu vim aqui procurando, assim como em outros lugares, um guia definitivo sobre quais pastas precisam ser gravadas no joomla.

Desculpe pessoal por ser o prenúncio de más notícias.

O conselho para usar as permissões 755 para todos os diretórios e 644 para todas as pastas é irresponsável, no mínimo.

Tornar o proprietário de todas as suas pastas e arquivos gravável é bom, desde que o proprietário não seja o servidor da web (Apache et al).

Sei que essa é uma prática recomendada comum, mas posso garantir que não é uma boa prática. O último software que você deseja gravar em pastas é o próprio servidor da web. É o servidor da web usado por hackers para tirar proveito dessa exploração que ainda não foi corrigida (ou mesmo encontrada).

Você acha que .htaccess salvará seu Kevin? Esqueça, porque você permitiu o acesso de gravação do servidor da Web, nossos queridos amigos hackers podem criar seus próprios arquivos .htaccess, dando-lhes as permissões que quiserem! como Oh, eu não sei, Umm faz com que os arquivos .jpg sejam executados pelo servidor. E você pensou que proteger contra a execução de .php cobriria seu A.

Mas verifique se apenas as pastas que requerem acesso de gravação o possuem. 755 e 644 para as seguintes pastas.

public_html/images
public_html/cache
public_html/tmp

E desative os arquivos .htaccess com o AllowOveride none para todas as pastas graváveis ​​(como as acima)

Para aqueles em hospedagem compartilhada, boa sorte, pois esse é um elemento de configuração que você não pode controlar.

Não pense que fazer o arquivo .htaccess somente leitura ajudará. Se nossos amigos hackers podem criar uma nova pasta (eles podem), eles podem criar seu próprio .htaccess.

Para aqueles que executam hospedagem compartilhada por tudo que é sagrado, obtenha uma pista sobre segurança.

Se você não entende de segurança, saia do negócio de hospedagem que está dificultando o resto de nós.

Agora, de volta à minha busca pelo guia definitivo sobre pastas que precisam de acesso de gravação ...

1
DeveloperChris