SELinux阻止了perl UNLINK命令

时间:2017-11-15 19:16:16

标签: linux apache perl centos selinux

我希望有人愿意指出我应该是一个非常简单的问题。

我有一个网页,通过Apache 2.4.6在带有perl 5.16.3的Centos 7盒子上提供。我在perl中编写的页面的后端。该页面使用户能够单击按钮来调用perl文件,以便从cgi-bin目录中的特定子目录中删除一个或多个文件。文件名总是不同的。 Perl只使用

  

我的$ SuccessfullDelete =取消关联(" $ file");

删除文件。
(注意:要删除的每个文件名都是由后端以编程方式确定的,最终用户请求无法修改以避免安全问题)

这很好用,当SELinux被禁用或设置为许可时,文件被删除;然而,当'setenforce 1'使用unlink权限被阻止所以我知道我的问题是SELinux。我使用" chcon -R -t httpd_sys_rw_content_t / path"设置了读/写权限。并验证这使我能够读写该目录。我本来以为它也可以让我从该目录中删除,但它没有,我没有找到任何其他选项似乎工作。

摘要

当从网络调用脚本时,SELinux阻止perl脚本删除位于cgi-bin文件夹下的名为THREADS的文件夹中的文件。

经过

  • 文件夹和文件的权限在
  • 中是正确的
  • 已经设置了SELinux 允许RW使用" chcon -R -t httpd_sys_rw_content_t / THREADS"
  • 停止SELinux或将其设置为permissive使其立即生效 工作
  • 我已阅读了大量的stackoverflow条目,网页和selinux man。我发现最有用的是:https://unix.stackexchange.com/questions/50639/httpd-cant-write-to-folder-file-because-of-selinux
  • 跑aureport -a看看日志中出现了什么。我清楚地得到以下内容:
  
      
  1. 11/15/2017 13:50:29 statisticsViewe system_u:system_r:httpd_sys_script_t:s0 87 file unlink   unconfined_u:object_r:httpd_sys_script_exec_t:s0被拒绝3804
  2.   

有人可以告诉我如何设置/ THREADS目录,这样我的perl脚本即使通过Apache调用也可以删除,读取和写入文件吗?在过去我知道经常建议只是禁用SELinux但我知道不再是这种情况所以我的目标是正确地做到这一点。编辑:如果有办法我可以改变我的代码以解决这个问题,我也会对此开放。

提前谢谢大家!

0 个答案:

没有答案