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

问题描述 投票:0回答:3

我正在安装 nginx。这是我遵循的步骤:

  • 在/root目录下制作index.html文件
  • 编辑/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;
        ...
    }
    
  • 以下this问题我放弃了权限:

gpasswd -nginx 根目录

chmod g+x /根

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

  • 我重新启动了服务器:

重启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"
nginx server fedora
3个回答
49
投票

哦!请不要禁用 SELinux

不要使用
/root
——这是一个陷阱!

首先 — 您是否真的需要从

/root
提供文件?这实际上是 root user account 的主目录,而不是 web root。

相反,请使用

/var/www/html
或(我的偏好)
/srv/www

如果您使用

/root
,请确保您没有暴露 ssh 密钥或
authorized_keys
文件、数据库密码或任何类似内容。使用
/root
来提供网页确实是一个坏主意。 (但是......这里没有羞耻:这显然令人困惑,并且由于“root”这个名字被用于多个概念,所以有点像历史设置的陷阱。)

让 SELinux 为您服务!

其次,您应该正确配置它,而不是禁用 SELinux(在本例中,SELinux 可以保护您不做危险的事情)。在 Fedora 中,SELinux 策略的设计使 nginx 与其他网络服务器共享此策略,因此,使用

/srv/www/yoursite
作为根,

chcon -R -t httpd_sys_content_t /srv/www/yoursite

应该这样做。

(这个答案也应该适用于 Fedora Linux 下游的所有“企业 Linux”发行版 — 即 RHEL、CentOS Linux、CentOS Stream 等)


24
投票

我在亚马逊 Linux 实例上,必须这样做

sudo chmod o+x /home/ec2-user/
sudo service nginx restart

不确定安全隐患是什么。


-3
投票

我通过禁用 SELINUX 并重新启动解决了这个问题

vi /etc/selinux/config

#SELINUX=enforcing
SELINUX=disabled

重启

© www.soinside.com 2019 - 2024. All rights reserved.