我刚刚在Archlinux盒子上安装了nginx,并遇到这个问题:
Nginxconfiguration为在/etc/nginx/nginx.conf作为“nginx”运行,我添加了一个新的用户/组:
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不能访问该文件夹或其任何子文件夹。
您应该使用chmod og+x /home/lamnk在/ home / lamnk上授予执行权限,以便允许除您之外的用户遍历文件夹。 如果没有阅读权限,他们仍然无法列出或阅读该文件夹的内容,并且没有写权限,他们不能对内容进行任何更改; 所以不存在安全风险,如果你想让你的主目录的子文件夹对其他用户可见,比如nginx用户,那么这是非常必要的。 您要在该文件夹中看到的掩码是drwx--x--x 。