2

我正在使用 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。

4

2 回答 2

6

对我来说,答案是创建一个策略模块以允许 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 ...

于 2011-08-08T18:07:35.883 回答
0

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

于 2010-11-19T13:31:18.323 回答