Problemas de permissão FTP e Apache

10

Estou tendo problemas com relação a qual usuário deve possuir meu diretório www - ftp ou apache? Quando definido como usuário ftp, o usuário pode adicionar, remover e modificar facilmente arquivos, mas as ações do sistema de arquivos php geram erros de permissão negada (é claro, porque eles exigem que o usuário seja apache). Se, no entanto, o diretório www for chown to apache, o ftpuser não poderá executar algumas ações, como modificação e exclusão de arquivos. Alguém já encontrou um problema semelhante? Qual é a correção? obrigado

raio
fonte

Respostas:

12

É para isso que servem os grupos.

Você pode adicionar o ftpusuário ao apachegrupo e vice-versa. Ou, melhor ainda, você pode adicioná-los a um terceiro grupo criado especificamente para esse fim.

por exemplo

# groupadd mygroup
# useradd -G mygroup ftp
# useradd -G mygroup apache
# chown -R: mygroup / var / www
# chmod -R g + rw / var / www

Esses comandos fazem o seguinte:

  1. Cria o novo grupo 'mygroup'
  2. Adiciona usuário ftp ao meu grupo
  3. Adiciona usuário apache ao meu grupo
  4. Concede recursivamente a propriedade do grupo ao conteúdo de / var / www / ao mygroup
  5. Concede recursivamente permissões de leitura e gravação em grupo ao conteúdo de / var / www /

Você só precisa garantir que os arquivos adicionados no futuro pertençam ao grupo 'mygroup' e tenham as permissões apropriadas para que o apache e o ftp os leiam / gravem.

hobodave
fonte
3
A combinação " find /var/www -type d -print0 | xargs -0 chmod g+s /var/www" com umask de 002 garantirá que novos arquivos e diretórios em / var / www herdem o grupo e as permissões apropriados para que o grupo tenha acesso r / w. Muitas distribuições Linux agora padrão para um umask de 002 (os mesmos que padrão para criar um novo grupo para cada novo usuário)
Freiheit
Esta resposta funciona perfeitamente! Mas estou tendo um problema em que o usuário ainda pode exibir todos os outros diretórios externos. var/wwwExiste um método para restringir isso?
Maxsme # 1515
3
As linhas 2 e 3 não funcionarão se os usuários já existirem (no CentOS 7). Nesse caso, use usermodegusermod -G mygroup ftp
nick
Simples, auto-explicativo, compreensível! Perfeito! Obrigado, @hobodave!
GTodorov
4

A maior parte do seu conteúdo deve pertencer a um usuário que não seja o apache. Supondo que você use o FTP para atualizar seu conteúdo, você pode definir todos os arquivos pertencentes ao ftp: apache. Eu sugeriria usar SCP para SFTP em vez de ftp. Os arquivos devem ter permissões 644 ou 640 e permissões de diretórios 755 ou 750.

Para arquivos e diretórios, o aplicativo precisa gravar para adicionar acesso de gravação em grupo.

BillThor
fonte
0

Eu tive um problema semelhante com uma página php criada que copiava uma pasta no servidor com um nome diferente. Corrigi-o desativando o modo de segurança php.

karl
fonte
2
O modo de segurança do PHP existe por um motivo. Desligá-lo não é uma boa ideia.
precisa saber é o seguinte