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

Ton*_*per 1 php selinux

我正在使用PHP 5.3.

使用getfacl文件权限是:

user::rwx
group::r-x
other::r-x
Run Code Online (Sandbox Code Playgroud)

我在使用PHP的程序执行函数时也遇到了问题,http://www.php.net/manual/en/ref.exec.php

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

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

rym*_*ymo 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"并可能"允许httpd_t var_t:file read",具体取决于您的设置
  7. cat wkhtml.audit | audit2allow -M wkhtmltopdf
  8. semodule -i wkhtmltopdf.pp (可能需要一分钟,耐心等待)

您现在应该能够无错误地加载pdf创建页面.如果没有,我们可能已经修复了一个问题并且到达另一个问题 - 可能需要重复步骤.这次尾巴到wkhtml.audit2,并在制作新模块时用原始版本捕捉它(否则你将撤消第一次修复!):

tail -F ... > wkhtml.audit2

如果audit2为空,则存在非selinux问题.除此以外:

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