Em qual usuário o NGinx e o PHP devem estar rodando?

15

Permissões são algo que me confundiram por algum tempo com o Linux. Então, no minuto, minhas instâncias do NGinx e do PHP-FPM estão sendo executadas com o usuário e o grupo:

www-data

Isso é padrão? Eu me deparo com problemas quando me deparo com o upload de arquivos.

Exemplo , um arquivo será enviado com o usuário e o grupo www-data. Agora, devido à forma como eu defino as permissões (0440) no meu aplicativo da web, não consigo fazer login via ssh com minha conta normal para fazer o download desses arquivos. Isso não pode ser alterado.

Eu estava pensando em mudar minha instância nginx e php para manter o grupo, mas alterá-los para serem executados com o meu nome de usuário.

Qual é a maneira correta de lidar com permissões aqui? Obrigado.

    
por The Pixel Developer 11.08.2009 / 14:26

3 respostas

12

É assim que isso funciona: Quando você faz o login via FTP / SSH e envia arquivos, eles são criados com suas permissões. Provavelmente seu webroot é mundialmente gravável (0777), isto é inseguro - todo usuário no sistema pode escrever algo lá. PHP é executado com diferentes privilégios de usuário (Eles são especificados na configuração do PHP-FPM, não na configuração nginx), e como o diretório é mundialmente gravável, o usuário PHP (www-data) também pode escrever lá. Mas o proprietário deste arquivo é www-data, não sua conta. São duas contas distintas no nível de permissão do sistema de arquivos.

Eu sugiro que você crie um usuário dedicado com o mínimo de privilégios possíveis, o qual possuiria o diretório webroot e seria usado para o upload do FTP / SSH E executaria o php. Você deve alterar a configuração do PHP-FPM, na seção de trabalho há entrada de usuário e configuração do NGINX, para que você possa tornar os arquivos do seu site não legíveis e mais seguros.

Não execute o PHP com um usuário privilegiado (sudo capablities, escreva privilégios outsite docroot), o que poderia comprometer a segurança do servidor.

    
por 11.08.2009 / 14:44
2

Eu tento evitar que os scripts de execução do nginx / php sejam de propriedade do www-data por motivos de segurança.

    
por 16.05.2011 / 00:58
1

O www-data user & grupo são bastante padrão. Pode ser www ou web em outros sistemas, mas a ideia é a mesma: executar os serviços da web com uma conta dedicada. Assim, quando o seu servidor web é comprometido, o atacante só poderá acessar os arquivos que esta conta foi concedida.

Se um usuário tiver que gerenciar os serviços da Web, você deverá adicionar o usuário ao grupo relevante (www-data) ou permitir que ele su (ou sudo) ao usuário relevante (ainda www-data).

    
por 11.08.2009 / 14:50