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
5
задан 13 January 2016 в 11:25
1 ответ

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

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

10
ответ дан 3 December 2019 в 01:09

Теги

Похожие вопросы