我有一个运行 nginx 的 libvirt 虚拟机,其中挂载了一个共享文件系统,我想公开挂载的目录。nginx 似乎运行良好,我可以访问 /usr/share/nginx/html 中的基本本地文件和子目录。我有一个从挂载到默认 nginx 位置的符号链接,通过
ln -sf /mnt/h_drive/ss4/ /usr/share/nginx/html/
..我可以ss4
从浏览器中看到目录,但是当我单击它时,我收到“403 Forbidden”,并在我的 /var/log/nginx/error.log 中看到以下内容
2017/10/18 17:52:16 [error] 30806#0: *1 opendir() "/usr/share/nginx/html/ss4" failed (13: Permission denied), client: xxx.xxx.xxx.xxx, server: _, request: "GET /opt/ss4/ HTTP/1.1", host: "example.com"
如果我禁用 selinux,setenforce 0
我就可以访问所有内容。
我需要做什么才能访问此坐骑?
答案1
故障排除技巧...
以 root 身份安装
$yum 安装 setroubleshoot-服务器 -y
$aureport -a # 给出拒绝报告
$ausearch -m avc -ts recent#最近10分钟
您应该能够更新政策
$ sudo audit2allow -a
当运行上述报告时,您将会看到与您自己的情况类似的情况。
nginx system_u:system_r:httpd_t:s0 5 文件 getattr unconfined_u:object_r:puppet_etc_t:s0 被拒绝 616
创建策略
$audit2allow-a-M 读取
使新政策生效
$semodule-i 读取.pp
答案2
我最终偶然发现了以下解决方案:
semanage allow httpd_t nfs_t:dir read;
感谢@bell 提供的故障排除提示,我一定会在以后遇到问题时参考它们!