nginx - userdir com permissões de usuário

1

O que eu quero fazer é ter o servidor habitual executando arquivos do usuário assim:

http://users.example.com/~user1/stuff.php

que seria armazenado em algum lugar em /home/user1/www ou algo parecido, mas executando com as permissões desse usuário. Portanto, os scripts no diretório /home/user1/www não podem acessar arquivos / pastas no diretório /home/user2/www (a menos que as permissões UNIX o permitam).

Eu lê uma solução usando vhosts e um novo pool para cada vhost, mas para centenas de usuários é provável que seja pesado. Existe alguma solução alternativa?

Note que estou rodando o nginx em um Raspberry Pi, então este é apenas um projeto em casa, nada realmente sério.

    
por pasadinhas 30.12.2014 / 01:37

1 resposta

1

Como o nginx não executa o php diretamente, mas, em vez disso, encaminha os pedidos para um aplicativo php, você se importa com o binário do php. Estou assumindo que você está executando o php-fpm, mas a idéia geral não é específica do php-fpm.

A página de configuração do php-fpm mostra as diretivas que podem ser definidas. Estamos interessados nos user e group params, pois eles controlam em qual usuário e grupo as instâncias do php serão executadas (e, portanto, com quais permissões o script será executado). A diretiva chroot também pode ser de interesse na criação de um sistema seguro (você pode querer restringir cada usuário apenas aos arquivos disponíveis em /home/user1/www , e não maiores na hierarquia de diretórios).

Como você pode ver, eles são definidos por pool.

Assim, você pode criar vários pools, um por usuário, e executar cada um com esse usuário e grupo. Você também pode chroot para a webroot do usuário. Essa é a solução que você vinculou.

Mas como você precisa configurar um novo pool php-fpm para cada usuário, não é algo que você possa fazer sob demanda. Em vez disso, crie a parte do pool php-fpm do processo de criação do usuário.

    
por 30.12.2014 / 02:51