为 Centos 7 上的 magento 网站设置 SElinux 标签

为 Centos 7 上的 magento 网站设置 SElinux 标签

我希望有人能帮助我。我有一个在 Centos 7.6 服务器上运行的 Magento 网站。

现在,网站无法正确加载,在 messages.log 中,我看到许多条目表明 SElinux 阻止了访问。我可以确认这是 SElinux 的问题,因为在宽容模式下设置可以修复(“松散使用”)该问题。

运行时sealert -l 3bedf708-7636-44d4-95f6-c98b8ea16687,我看到以下内容:

SELinux 阻止 /usr/sbin/httpd 对 /var/www/html/MyMagentoSite/var/session/ 进行写访问

不同文件和文件夹有不同的条目。

我只需要跑步就可以了吗chcon -R -t httpd_sys_rw_content_t /var/www/html/magentofoldername/*,或者有什么更好的解决方案?

这似乎违反直觉,因为我授予了 magento 文件夹内所有内容的读写权限。

答案1

为什么不遵循你的直觉并将标签仅应用于session目录(来自你的错误消息)。

尽管如此,直觉并不是最好的帮手,但您可以使用侦探技巧查找“预期”标签。

默认 PHP 会话目录是/var/lib/php/session

如果你这样做semanage fcontext -l | grep php,你就会看到这个条目:

/var/lib/php(/.*)? all files system_u:object_r:httpd_var_lib_t:s0 

因此我认为 PHP 会话目录应该被标记为httpd_var_lib_t

所以:

chcon -R -t httpd_var_lib_t /var/www/html/magentofoldername/var/session 

答案2

如果您使用chcon并重新启动服务器后,您将遇到同样的问题,请semanage fcontext按如下方式使用:

semanage fcontext -a -t httpd_var_lib_t "/var/www/html/magentofoldername/var/session(/.*)?"

现在您可以应用 selinux 权限:

restorecon -R -v -F   /var/www/html/magentofoldername/var/session

相关内容