共计 1799 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 这篇文章主要为大家介绍了服务器 nginx 权限被拒绝解决案例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 |
现在服务器资产多种多样, 习惯了阿里云的保姆式配置, 其他私有云的装机配置各有各的风格, 今天聊聊 nginx 突发状况, 权限被拒绝的问题相关排查过程及解决办法。
本来以为是个相当愉快的过程, 上一篇说明了服务器安全原因, 相关网络环境的排查, 这次继续说一说关于 nginx 代理遇到的问题 先说说表象, 原本的服务器已经预装了 nginx 找到相关配置进行设置以后, 还是无法访问
ps -aux | grep nginx // 查看 nginx 进程情况
netstat -anp | grep :80 // 查看相关端口已正常启动
在确定相关 nginx 已经启动的情况下, 发现代理的网站无法访问, 接口相关的 500 可以正常返回
curl 127.0.0.1:80/web // 验证访问内容
/var/log/nginx/ // 查看相关日志信息
或者用一下命令查看
systemctl status nginx.service -l
经过对错误日志的排查发现访问网站静态网页时,相关异常为 ‘Permission denied’,这种情况查了很多资料,
chcon 命令是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境。
系统开启了 SeLinux,受到了 SeLinux 的限制 先说说 SeLinux 的概念和作用
selinux(Security-Enhanced Linux) 安全增强型 linux,是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
三种模式:
Enforcing:强制模式,在 selinux 运作时,已经开始限制 domain/type。
permissive: 警告模式,在 selinux 运作时,会有警告讯息,但不会限制 domain/type 的存取。
disabled: 关闭模式。
可用 getenforce 查看 selinux 状态
selinux 对文件的作用:
当开启 selinux 后,selinux 会给每个文件加载标签 context, 安全上下文必须配对,否则文件不能访问 查看下 selinux 策略配置 (找到能生效的文件夹和当前发布的文件夹权限区别, 进行相关的设置)
ls -lrtZ /usr/share/nginx/html
chcon -R -t httpd_sys_content_t /home/xx/
nginx -s reload
最终解决了相关问题,以下是进行的一些无效尝试, 可能某些服务器环境可以生效
发布文件夹授权的尝试
sudo chmod o+x /home/xxx/
关于 nginx 配置文件 /etc/nginx/nginx.conf, 指定用户的尝试, 依然无效
user nginx; -> 更改为 user root
nginx -s reload
其他比较粗暴一点儿的教程要么直接关闭或临时性解决
setenforce 0 ## 设置 SELinux 成为 permissive 模式
#setenforce 1 ## 设置 SELinux 成为 enforcing 模式
永久生效 修改 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled,重启机器 没敢关闭这个安全策略
我这种吸引 bug 的体质,不配顺顺利利完成任务、服务器的问题在最开始上班时,windows 环境下经常最头疼的就是服务器环境的预装上线,常常因为这个问题搞到 1 点多, 但那会羁绊少, 怀着学习和对事儿的认真,再加上一块和组员和领导搓一顿, 幸福感满满。
其后也带过很多人, 合作过许多人、形形色色的,慢慢的发现越往后入行的很多人害怕环境部署,害怕出问题, 所以拒绝去尝试部署。动辄就是 “ 福报 ” 和 “PUA” 防身, 非是站在道德制高点去指摘,很多事情过犹不及,盲目的随大流去指摘,人生活和工作都是在为自己负责,尽最大的努力,做最好的自己、莫作“总有刁民想要害朕”的心态太久, 实在不行,换个环境解放局限性。
linux 环境之前一直浅用, 之后算是有较多的涉足, 沉淀下来的相关内容也会经常去完善补充,部署参考, 工作久了很多对自身来说困难的事情, 是没办法绕过去或者退缩的,一往无前吧、永远的少年