Я только что установил 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
.