Mudança repentina nas permissões de upload de arquivos

1

Depois de dois anos e mais do CMS personalizado do meu cliente funcionando bem, recebo uma ligação dizendo que as imagens, os arquivos PDF e os documentos que eles enviam não aparecem em seu site. Olhando para isso eu acho que os arquivos são enviados para o servidor, mas não são legíveis. Eles têm permissão 0600 em vez de 0644. Eu posso ver todos os arquivos enviados anteriormente no servidor com o valor de permissão de 0644. Uma outra coisa notável é o valor de proprietário / grupo mudou de 258809/1015 para 258809/0.

Do meu ponto de vista, acho que é uma mudança na configuração do servidor, mas os hosts dizem que não tem nada a ver com eles e nenhuma configuração foi alterada. Também posso dizer que não fiz alterações no código em mais de dois anos.

Eu fiz alguns testes e posso alterar as permissões usando a função chmod, mas não quero abrir o código e passar por todo tipo de arquivo que eles podem enviar e alterar o código.

O que eu quero saber é que a configuração pode ser alterada de alguma forma para corrigir esse problema? detalhes do servidor são os seguintes:

  • Versão do PHP 4.4.1
  • Apache / 1.3.33 (Unix)

    Qualquer ajuda apreciada, obrigado, Dafydd

por Dafmeister 21.01.2011 / 23:17

1 resposta

2

Existem dois problemas aqui. Primeiro, o servidor apache agora está rodando no grupo raiz (0) quando estava rodando em qualquer grupo 1015, então claramente alguma coisa mudou lá. O Apache tem opções de configuração para especificar em qual usuário e grupo ele é executado, a opção "Grupo" foi alterada ou removida.

Segundo, em relação às permissões, é possível que elas não tenham "mudado" nada ... elas nunca definiram uma umask específica em primeiro lugar. O Apache usa o umask do usuário que o inicia, então, bem no começo, o umask provavelmente era 0022 (poderia ser 0033). Quando eles reiniciaram para mudar a configuração do Grupo, sua umask provavelmente era 0077 (ou 0066). Da mesma forma, o PHP usa o umask do Apache.

Explicando umask leva um pouco de trabalho: Basicamente, umask "desabilita" bits de permissão do modo de arquivo. A maioria dos programas tenta criar arquivos no modo rw-rw-rw e diretórios no modo rwxrwxrwx. Com umask bastante normal de 0022 (---- w- w-), esses bits seriam deletados e você terminaria com os diretórios rw-r -r-- e rwxr-xr-x. Com um umask de 0077 (--- rwxrwx) esses arquivos seriam rw ------- e diretórios rwx ------. Na matemática binária, o modo final do arquivo é (mode & !umask) (limitado aos bits de permissão normais, não suid / sgid / sticky, que umask não afeta).

Além de fazer com que o host encerre e reinicie o servidor da Web com sua umask desejada, você pode chmod tudo sozinho ou chamar umask (0022) no seu arquivo de configuração central (observe o aviso lá sugerindo que você use o chmod () em vez dos servidores multithread).

    
por 22.01.2011 / 01:00