Enquanto o Qual é a melhor maneira de lidar com permissões para o usuário do Apache 2, www-data em / var / www? , discutir com o problema de permissão muito bem, ele tem quase 9 anos e não segue a corrente melhores práticas. Responderei a pergunta: Qual é a melhor maneira de fazer isso com segurança?
As discussed on meta, the moved and improved version of this answer is here.
-
Ter um usuário separado para cada site , ou seja, não veicular todos os sites usando
www-data
. Isso é importante, assim como no seu WordPress (ou qualquer outro CMS), o seu Apache não está servindo arquivos de conteúdo estático, mas executando o PHP. Se você tiver um problema de segurança em um único site, ele poderá se espalhar para todos os sites em execução como o mesmo usuário. -
O upload de arquivos via FTP não é seguro , pois envia as senhas e o conteúdo em texto simples. Por exemplo. o WordPress que você está hospedando possui informações de login do banco de dados em
wp-config.php
. Você deve estar usando SSH File Transfer Protocol (SFTP), em seu lugar.Dessa forma, você também pode adicionar chaves públicas dos administradores do seu site a
~/.ssh/uthorized_keys
, tornando desnecessário que eles saibam a senha do usuário em que o site está sendo executado. (Veja Como configurar as chaves SSH no Ubuntu 16.04 ). A chave pública pessoal de SSH pode ser usada em vários sites para facilitar & acesso rápido, reduzindo o peso extra de ter várias contas. -
Use o PHP-FPM . É a abordagem atual para executar o PHP como usuário. Crie um novo pool para cada usuário, por exemplo, um pool por cada site. Isso é o melhor para segurança e desempenho, pois você também pode especificar a quantidade de recursos que um único site pode consumir.
Ver, por exemplo, NeverandingSecurity's Executar o php-fpm com separado usuário / uid e grupo no linux . Existem tutoriais como o Usando o PHP-FPM do HowtoForge com Apache no Ubuntu 16.04 que não usa o PHP-FPM para aumentar a segurança através da separação do usuário, orientando para usar um único soquete do FPM no servidor.