nginx:"/ root /index.html"禁止(13:权限被拒绝)

son*_*132 8 fedora nginx server

我正在安装nginx.以下是我遵循的步骤:

  • 将index.html文件放在/ root目录中
  • 编辑/etc/nginx/nginx.conf.编辑后,它看起来像这样:

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log;
    ...
    
    http {
       ...
    
       server {
            listen       80 default_server;
            server_name  my_domain_name.com;
            root   /root;
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 按照这个问题,我放弃了权限:

gpasswd -a nginx root

chmod g + x/root

(抱歉,无法正确格式化为代码)

  • 我重新启动了服务器:

服务nginx重启

我访问了my_domain_name.com并收到403错误./var/log/nginx/error.log内容:

"/root/index.html" is forbidden (13: Permission denied), client: 117.211.86.108, server: my_domain_name.com, request: "GET / HTTP/1.1", host: "my_domain_name.com"
Run Code Online (Sandbox Code Playgroud)

mat*_*tdm 18

哦! 请不要禁用SELinux.

首先 - 你真的需要提供文件/root吗?这实际上是root用户的主目录,并不意味着是Web根目录.这实际上是一个非常糟糕的主意.相反,使用/var/www/html或(我的偏好)/srv/www.如果你使用/root,请确保你没有暴露SSH密钥或authorized_keys文件,数据库密码,或任何类似.这真是一个坏主意.

其次,您应该正确配置SELinux,而不是禁用selinux(在这种情况下,保护您不会做出危险的事情).在Fedora中,SELinux策略的设计使得nginx与其他Web服务器共享,因此,使用/srv/www/yoursiteroot作为

chcon -R -t httpd_sys_content_t /srv/www/yoursite
Run Code Online (Sandbox Code Playgroud)

应该这样做.

  • 我在这件事上浪费了几个小时......谢谢你! (2认同)

oys*_*ce8 9

我在亚马逊 linux 实例上,不得不做

sudo chmod o+x /home/ec2-user/
sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)

不确定安全隐患是什么。