Alternativa para ter diretórios com 777 permissões

3

Estou executando vários sites no meu servidor dedicado e muitos dos meus sites exigem que alguns diretórios tenham permissões definidas para 777. Eu sei que esse é um grande problema de segurança, e também sei que é possível configurar as coisas para que você não use Não tenho que usar o 777 em diretórios, só não sei fazer isso. Alguém pode me apontar na direção certa para que eu possa preencher a função sem ter 777 diretórios?

Obrigado!

    
por lewisqic 10.02.2011 / 20:25

3 respostas

3

Quando descobri as ACLs unix há alguns anos, elas me surpreenderam! Também é incrível como eles não são de conhecimento comum.

Em suma, eles permitem que você defina a permissão de arquivo estendido, além do simples usuário + grupo + outro documentado classicamente.

Os dois comandos que você quer são " setfacl " e " getfacl ". Você pode precisar remontar seu fs com suporte acl se ele reclamar " mount -o remount, rw, acl / ".

As duas maneiras comuns que eu uso o setfacl são:

setfacl -R -m u:apache:rwx /var/www/mydirectory
setfacl -R -d -m u:apache:rwx /var/www/mydirectory

A primeira linha recursivley adicionou permissões rwx a tudo no caminho fornecido (em cima das permissões já em vigor). O segundo comando faz com que a política padrão para novos arquivos e diretórios tenha automaticamente o rwx para o usuário do apache.

Isso é muito mais rápido do que mexer com permissões de grupo ou suPHP, etc.

    
por 10.02.2011 / 22:10
2

Como você está no controle do servidor, você pode considerar a execução do PHP através de suPHP . Os processos do PHP são gerados para um usuário distinto. Dessa forma, seus diretórios podem ser chmodados para 0700 com propriedade para o usuário em que os processos estão sendo executados.

P.S .: Vejo você no serverfault. Eu votei para mudar.

    
por 10.02.2011 / 20:29
2

Se você tiver que executar com as coisas definidas para 777, isso significa que você tem alguns problemas de propriedade.

Em geral, existem apenas três grupos de usuários com os quais você precisa se preocupar:

  • os usuários reais que estão configurando o aplicativo da web;
  • o uid que o servidor web (e provavelmente o PHP) executa; e
  • todos os outros.

Geralmente, você deve ser capaz de definir as propriedades dos arquivos e diretórios para serem o usuário real que está realizando a configuração, e os membros do grupo como membros do grupo do servidor da web. Se você fizer isso, poderá definir as permissões na maioria das coisas como rwx para o proprietário e rx para o grupo do apache; suas notas de aplicativo devem ser muito específicas quanto aos diretórios que o aplicativo requer acesso de gravação. (Se não estiver, provavelmente está escrito de outras formas também e pode ser uma vulnerabilidade de segurança.)

Se você fizer isso corretamente, então "todos os outros" (que são "todos como usuários no servidor que não são membros do grupo do servidor web") podem ter suas permissões configuradas como 0 (ou seja, sem leitura, não escreva, não-ex).

Por exemplo, minha instalação do WordPress é instalada por mim, mas executada pelo servidor da Web, portanto, tudo é geralmente permissão 750, propriedade dave: apache. O diretório em que o wordpress armazena os uploads recebidos está configurado para a permissão 770, ownership dave: apache.

    
por 11.02.2011 / 04:34

Tags