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 ディレクトリにまったく同じ権限を持つ convert プログラムがあり、is_executable 関数は true を返します。

4

2 に答える 2

6

私にとっての答えは、ポリシーモジュールを作成して、SELinux を無効にせずに wkhtmltopdf を実行できるようにすることでした。

  1. sudo su -(次のステップを簡単にするために root として実行します)
  2. tail -F /var/log/audit.log | grep wkhtml > wkhtml.audit(これを実行したままにして、次のステップに進みます)
  3. PDF を作成しようとする Web ページを読み込もうとすると、以前と同様に失敗しますが、現在はログに記録されています。
  4. CTRL+C でステップ 2 からプロセスを停止します(急いでいる場合は 7 にスキップできますが、selinux の例外を永続化する前に、これらのレビュー ステップを使用することを強くお勧めします!)
  5. cat wkhtml.audit | audit2allow -m wkhtmltopdf > wkhtmltopdf.te
  6. wkhtmltopdf.te ファイルを見直して、新しいルールが適切であることを確認してください。セットアップによっては、「allow httpd_t self:process execmem」と「allow httpd_t var_t:file read」が表示される可能性があります。
  7. cat wkhtml.audit | audit2allow -M wkhtmltopdf
  8. semodule -i wkhtmltopdf.pp(1 分ほどかかる場合があります。しばらくお待ちください)

これで、pdf 作成ページをエラーなしでロードできるはずです。そうでない場合は、1 つの問題を修正して別の問題に到達した可能性があります。手順を繰り返す必要があるかもしれません。今回は wkhtml.audit2 にテールを付け、新しいモジュールを作成するときにオリジナルと一緒に cat します (そうしないと、最初の修正を取り消すことになります!):

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 に答える