Como defino minhas permissões nginx para permitir envios de formulários multipartes?

Como defino minhas permissões nginx para permitir envios de formulários multipartes?

Estou usando Nginx com Puma (para um aplicativo Rails) no CentOS 7. Estou confuso sobre como configurar permissões para upload de arquivo. Atualmente, quando tento fazer upload de um arquivo (enviar um formulário de várias partes), recebo o seguinte erro no log de erros do nginx

2018/02/28 16:35:48 [crit] 31241#0: *148 open() "/var/lib/nginx/tmp/client_body/0000000006" failed (13: Permission denied), client: 96.92.233.165, server: example.com, request: "POST /people HTTP/1.1", host: "example.com", referrer: "http://example.com/people/new"

Estou tentando fazer com que tudo funcione como usuário "Rails". Abaixo estão meus processos nginx e puma

[root@server /]# ps -elf | grep nginx
0 S root       944   920  0  80   0 -  2249 pipe_w 16:38 pts/1    00:00:00 grep --color=auto nginx
1 S root     31238     1  0  80   0 - 30712 rt_sig 15:06 ?        00:00:00 nginx: master process /usr/sbin/nginx
5 S rails    31239 31238  0  80   0 - 30843 ep_pol 15:06 ?        00:00:00 nginx: worker process
5 S rails    31240 31238  0  80   0 - 30843 ep_pol 15:06 ?        00:00:00 nginx: worker process
5 S rails    31241 31238  0  80   0 - 30843 ep_pol 15:06 ?        00:00:00 nginx: worker process
5 S rails    31242 31238  0  80   0 - 30843 ep_pol 15:06 ?        00:00:00 nginx: worker process
[root@server /]# ps -elf | grep puma
1 S rails      582     1  0  80   0 - 135430 poll_s 16:19 ?       00:00:00 puma 3.11.2 (tcp://0.0.0.0:3000,unix:///home/rails/scale_production/shared/sockets/puma.sock) [scale_production]
1 S rails      590   582  0  80   0 - 286725 futex_ 16:19 ?       00:00:02 puma: cluster worker 0: 582 [scale_production]
1 S rails      594   582  0  80   0 - 287282 futex_ 16:19 ?       00:00:03 puma: cluster worker 1: 582 [scale_production]
1 S rails      596   582  0  80   0 - 287255 futex_ 16:19 ?       00:00:02 puma: cluster worker 2: 582 [scale_production]
1 S rails      599   582  0  80   0 - 286939 futex_ 16:19 ?       00:00:02 puma: cluster worker 3: 582 [scale_production]
0 S root       946   920  0  80   0 -  2250 pipe_w 16:38 pts/1    00:00:00 grep --color=auto puma

e abaixo estão as permissões para o diretório problemático. O que mais devo definir para que isso funcione?

[root@server /]# ls -al /var/lib/nginx
total 12
drwx------  3  755 rails 4096 Feb 24 14:33 .
drwxr-xr-x 23 root root  4096 Feb 24 14:33 ..
drwx------  7  755 rails 4096 Feb 24 15:06 tmp
[root@server /]# ls -al /var/lib/nginx/tmp/client_body
total 8
drwx------ 2 rails rails 4096 Feb 24 15:06 .
drwx------ 7   755 rails 4096 Feb 24 15:06 ..
[root@server /]# ls -al /var/lib/nginx/tmp
total 28
drwx------ 7   755 rails 4096 Feb 24 15:06 .
drwx------ 3   755 rails 4096 Feb 24 14:33 ..
drwx------ 2 rails rails 4096 Feb 24 15:06 client_body
drwx------ 2 rails rails 4096 Feb 24 15:06 fastcgi
drwx------ 2 rails rails 4096 Feb 24 15:06 proxy
drwx------ 2 rails rails 4096 Feb 24 15:06 scgi
drwx------ 2 rails rails 4096 Feb 24 15:06 uwsgi

Responder1

Você está executando o nginx como o usuário nomeado rails(o que é incomum).

Mas um dos seus diretórios, /var/lib/nginx/tmp, pertence ao usuário inexistente 755.

A razão usual para isso acontecer é digitar erroneamente chownquando você quis dizer chmod.

Você deve conseguir resolver o problema corrigindo a propriedade deste diretório.

chown rails /var/lib/nginx/tmp

Aliás, você também parece ter desabilitado o SELinux. Você deveConserte issoNa primeira oportunidade.

Responder2

você pode ver /var/lib/nginx/tmpque pertence ao usuário 755. Provavelmente você usou o comando errado: chownem vez de chmod.

Para corrigir isso:

chmod 755 /var/lib/nginx/tmp
chown rails /var/lib/nginx/tmp

informação relacionada