O Nginx não tem permissão para acessar arquivos com a mesma propriedade

4

Acabei de instalar o nginx em uma caixa do Archlinux e encontrar esse problema:

O Nginx está configurado para ser executado como "nginx" , um novo usuário / grupo que adicionei em /etc/nginx/nginx.conf :

user nginx nginx;

Para doublecheck:

$ ps aux | grep nginx
nginx     9678  0.0  0.5  28472  2856 ?        S    17:37   0:00 nginx: worker process
nginx     9679  0.0  0.5  28472  2856 ?        S    17:37   0:00 nginx: worker process
root     31912  0.0  0.6  28084  3364 ?        Ss   17:24   0:00 nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;

A raiz do servidor está em:

    location / {
            root   /home/lamnk/sites/host.com;
            index  index.html index.htm;
    }

e o proprietário do arquivo também está definido como nginx :

$ ls -la /home/lamnk/sites/host.com                                         
total 12
drwxr-xr-x 2 lamnk http  4096 Jan 12 09:37 .
drwxr-xr-x 3 lamnk users 4096 Jan 12 09:36 ..
-rw-r--r-- 1 nginx nginx   21 Jan 12 09:37 index.html

Quando vou para host.com , recebo o erro 403 proibido. No error.log :

2016/01/12 17:28:23 [error] 31914#0: *2 open() "/home/lamnk/sites/host.com/index.html" failed (13: Permission denied), client: 171.233.242.40, server: host.com, request: "GET /index.html HTTP/1.1", host: "host.com"

Mas quando eu altero o nginx para executar como meu próprio nome de usuário lamnk , o nginx pode retornar o conteúdo corretamente, sem nenhuma outra alteração na permissão do arquivo. O que dá ??

EDIT: as permissões nos diretórios pai:

$ namei -l /home/lamnk/sites/host.com
f: /home/lamnk/sites/host.com
drwxr-xr-x root  root  /
drwxr-xr-x root  root  home
drwx------ lamnk users lamnk
drwxr-xr-x lamnk users sites
drwxr-xr-x lamnk http  host.com
    
por Lamnk 12.01.2016 / 19:02

1 resposta

8

O usuário nginx não é capaz de percorrer o sistema de arquivos para alcançar a pasta onde você colocou o seu site. Um usuário deve ter a permissão executar (+ x) em uma pasta para poder atravessá-la. De suas informações de permissão, drwx------ lamnk users lmank mostra que somente o proprietário do diretório tem o direito de ler, gravar e executar na pasta. Portanto, o nginx não pode acessar essa pasta ou qualquer subpasta a menos que seja executada como esse usuário.

Você deve conceder direitos de execução em / home / lamnk com chmod og+x /home/lamnk para que outros usuários, além de você, possam percorrer a pasta. Sem direitos de leitura, eles ainda não podem listar ou ler o conteúdo dessa pasta e, sem direitos de gravação, não podem fazer alterações no conteúdo; Portanto, não há nenhum risco de segurança para isso, e é necessário se você deseja ter subpastas do seu diretório inicial visíveis para outros usuários, como o usuário nginx. A máscara que você está procurando na pasta seria drwx--x--x .

    
por 12.01.2016 / 19:05