即使文件绝对可执行,PHP函数is_executable也会返回false

时间:2010-11-18 15:40:39

标签: php selinux

我正在使用PHP 5.3。

使用getfacl文件权限是:

user::rwx
group::r-x
other::r-x

我在使用PHP的程序执行函数http://www.php.net/manual/en/ref.exec.php

时也遇到了问题

有问题的程序是wkhtmltopdf,我把它放在我的/ usr / bin目录中。

我的/ usr / bin目录中的转换程序具有完全相同的权限,并且is_executable函数返回true。

2 个答案:

答案 0 :(得分:5)

对我来说,答案是创建一个策略模块,允许wkhtmltopdf在不禁用SELinux的情况下运行:

  1. sudo su -(以root身份运行以使后续步骤更简单)
  2. tail -F /var/log/audit.log | grep wkhtml > wkhtml.audit(离开 这个运行并继续下一步)
  3. 尝试加载试图创建pdf的网页,它会像以前一样失败,但现在我们就是这样 日志记录。
  4. CTRL + C停止从第2步开始的过程(如果在,则可以跳到7) 匆忙,但强烈建议您在制作之前使用这些审查步骤 selinux例外永久!)
  5. cat wkhtml.audit | audit2allow -m wkhtmltopdf > wkhtmltopdf.te
  6. 查看wkhtmltopdf.te文件 确保新规则合情合理。你可能会看到“允许 httpd_t self:process execmem“and possible”允许httpd_t var_t:file 阅读“取决于您的设置
  7. cat wkhtml.audit | audit2allow -M wkhtmltopdf
  8. semodule -i wkhtmltopdf.pp(可能需要一分钟, 耐心等待。)
  9. 您现在应该能够无错误地加载pdf创建页面。如果没有,我们可能已经修复了一个问题并且到达另一个问题 - 可能需要重复步骤。这一次尾巴到wkhtml.audit2并在制作新模块时用原始版本捕捉它(否则你将撤消第一次修复!):

    tail -F ... > wkhtml.audit2

    如果audit2为空,则存在非selinux问题。否则:

    cat wkhtml.audit wkhtml.audit2 | audit2allow ...

答案 1 :(得分:0)

经过一番研究,我解决了这个问题。问题是selinux政策阻碍了。我使用了来自/ usr / bin / convert的安全上下文,并使用chcon命令将相同的安全上下文应用于/ usr / bin / wkhtmltopdf