Pelo que eu posso dizer (e é quase impossível determinar o que você realmente está tentando resolver / alcançar - se houver alguma coisa, provavelmente é um ), o que você está tentando fazer é fazer com que o servidor possa ler / gravar pastas e arquivos, mas que o 'endpoint' que você tenho para os clientes só podem ler dados. Você não pode ter as duas coisas sem girar dois servidores Web completamente separados com conjuntos de permissões completamente diferentes. Como foi dito em outra resposta, isso não protege você de ter seu principal servidor de leitura / gravação protegido contra ataques.
A partir da minha interpretação, o que você parece querer é permitir que o servidor da Web e o back-end correspondente acessem os arquivos e as URLs de serviço para que os clientes do nó de extremidade carreguem (para imagens, etc.). Isso não é mais do que as permissões do servidor Web básico que eu toquei em outra resposta. que eu liguei nos comentários (e abaixo no final desta resposta).
Este é um resumo das etapas necessárias para obter uma estrutura de permissões do basic servidor de arquivos do sistema da Web para isso. Você não deveria ter que fazer muito mais que isso. Se você fizer isso, é a maneira como você escreve seu back-end para lidar com as permissões e está além do escopo do que pode ser respondido aqui.
Etapa 1: coloque o diretório do projeto em um local acessível por servidor da web, como uma pasta em /var/www/
para o nome do site.
sudo mkdir /var/www/PROJECTDIR
Etapa 2: coloque todos os seus arquivos de projeto lá (como o usuário root
para começar).
Etapa 3: altere a propriedade da estrutura de diretório do novo diretório para www-data:www-data
para o servidor da Web.
sudo chown -R www-data:www-data /var/www/PROJECTDIR
Etapa 4: conceda privilégios de leitura / gravação / execução a www-data
usuário / grupo para todos os diretórios e privilégios de leitura / gravação para todos os arquivos, dentro do diretório do projeto.
sudo find /var/www/PROJECTDIR -type d -exec chmod 770 {} \;
sudo find /var/www/PROJECTDIR -type f -exec chmod 660 {} \;
Passo 5: está feito.
Você não parece precisar de nenhuma outra conta de usuário no próprio sistema (usuários não-root, outros usuários do sistema, etc.) para poder ver qualquer coisa dentro dos subdiretórios aqui, então o acima irá realizar isso.
Você também não precisa de nenhuma permissão especial , pois cabe ao back-end que você escreveu manipular adequadamente se uma determinada solicitação deve, por sua vez, retornar uma determinada URL para uma determinada imagem no sistema. Se não tiver esse tipo de tratamento de permissões, isso é um problema para o seu back-end individual, não um problema do NGINX e não um problema de filepermissions do sistema.
Note que, como eu disse acima, este é o mesmo conjunto de instruções do outra resposta que basicamente faz o mesmo.