Estou tentando configurar um ambiente de hospedagem compartilhada onde os usuários recebem acesso SFTP a uma ou várias pastas. Considere o seguinte cenário:
/var/www/
contém vários diretórios que representam domínios. Os usuários podem adicionar, modificar ou excluir arquivos em diretórios baseados em ACLs, para que o usuário john
possa ter acesso total /var/www/domain1.com
, /var/www/domain2.org
mas não /var/www/domain3.de
. Ao mesmo tempo, é claro, o servidor web deve ser capaz de ler os arquivos em todos os diretórios.
O que não compreendo completamente é como garantir tudo de tal forma que
- todos os usuários são presos
/var/www/
e veem apenas os domínios (subpastas) que têm permissão para ver - o usuário Apache
www-data
só tem acesso de leitura a todas as pastas - O PHP tem acesso de gravação a algumas pastas, como uma pasta de uploads de usuários ou uma pasta de log dentro
/var/www/domain/
- novos arquivos enviados via SFTP obtêm as permissões corretas automaticamente e o usuário é capaz de especificar qual pasta pode ser escrita pelo PHP sem ser acessível por outros usuários de hospedagem compartilhada
Com PHP quero dizer uma instância PHP-FPM com cada domínio sendo uma entrada separada pool.d
e o usuário livremente configurável.
Minhas idéias até agora eram adicionar um grupo chamado sftp
e configurar sshd
para prender os usuários pertencentes ao grupo sftp
, /var/www/
permitir autenticação por senha para eles e adicionar ForceCommand internal-sftp
. Então eu definiria ACLs padrão recursivamente para as pastas internas, /var/www/
para que os usuários certos tivessem acesso aos diretórios certos. Mas o que defino como usuário e grupo proprietário das pastas? Tenho que ajustar o umask? Qual é o usuário e grupo apropriado para a respectiva instância do pool PHP-FPM?