Назад | Перейти на главную страницу

Nginx не имеет разрешения на доступ к файлам с тем же владельцем

Я только что установил nginx в ящик Archlinux и столкнулся с этой проблемой:

Nginx настроен для работы как "nginx", новый пользователь / группа, которую я добавил в /etc/nginx/nginx.conf:

user nginx nginx;

Для двойной проверки:

$ 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;

Корень сервера находится по адресу:

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

а владельцем файла является 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

Когда я иду в host.com, Я получил 403 запрещенную ошибку. в 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"

Но когда я изменяю nginx для запуска под своим именем пользователя lamnk, тогда nginx сможет вернуть контент правильно, без каких-либо других изменений прав доступа к файлу. Что дает??

РЕДАКТИРОВАТЬ: разрешения на родительские каталоги:

$ 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

Пользователь nginx не может пройти по файловой системе, чтобы добраться до папки, в которой вы разместили свой сайт. Пользователь должен иметь разрешение на выполнение (+ x) для папки, чтобы иметь возможность перемещаться по ней. Из информации о вашем разрешении, drwx------ lamnk users lmank показывает, что только владелец каталога имеет право читать, писать и выполнять в папке. Следовательно, nginx не может получить доступ к этой папке или любым ее подпапкам, если он не запущен от имени этого пользователя.

Вы должны предоставить права на выполнение для / home / lamnk с помощью chmod og+x /home/lamnk чтобы пользователи, кроме вас, могли перемещаться по папке. Без прав чтения они по-прежнему не могут просматривать или читать содержимое этой папки, а без прав записи они не могут вносить какие-либо изменения в содержимое; поэтому здесь нет угрозы безопасности, и это необходимо, если вы хотите, чтобы подпапки вашего домашнего каталога были видны другим пользователям, например пользователю nginx. Маска, которую вы хотите увидеть в этой папке, будет drwx--x--x.