0

概要

特定のプログラムがインストールされている Linux マシンで apache を実行しています。PHPページからプログラムを呼び出して出力を取得したい。

特別な制約

プログラムを実行するには、特定の環境変数が必要です。たとえば、ライブラリへのパスと追加の変数を含む LD_LIBRARY_PATH です。環境は、 apacheユーザーではないマシン上のユーザーXに対して定義されています。

提案されたオプション

これまでのところ、次のオプションを考えてきました (それらがすべてスマートまたは安全であるという意味ではありません)。

  1. ユーザーapacheがユーザーXとしてプログラムを実行できるようにします(完全な環境を持つことができる方法で)。レシピ ?
  2. ユーザーapacheの環境を変更します。Apache はnologinユーザーであるため、方法がわかりません。
  3. 適切な環境を持つユーザーとして別のマシンに SSH 接続します。これは、Web サーバーとこのマシンの間にパスワード (公開/秘密鍵) 接続がないことを意味します。それは危険ですか ?

質問

  • よりシンプルまたはより良いオプションを見落としましたか?
  • どのオプションを使用しますか?その理由は?
4

2 に答える 2

0

このプラットフォームを完全に制御できますか?

suexec、またはmpm-iTKを調べることができます

仮想ホスト内で上記を構成し、ユーザーまたはグループとしての実行を、バイナリにアクセスできるものに設定できます。

現在の設定では、新しいグループを作成し、apacheユーザー/グループをそのグループに割り当て、読み取り/書き込みまたは読み取り/実行権限で実行するバイナリにグループを適用し、goodtimesの役割を与えることができます。

于 2012-07-02T16:44:05.733 に答える
0

設定する必要がある環境変数 (の値) がわかっている場合は、それらを exec の先頭に追加するだけです。

exec('LD_LIBRARY_PATH="/you/paths"; OTHER_VAR="baz"; /your/bin');

これは、指定された ENV 変数セットで実行されますが、ユーザーX/your/binではなく apache ユーザーとして実行されます。プログラムを特定のユーザーとして実行する必要がある場合、SSH はそれほど悪い考えではないようです。

于 2012-07-02T15:40:24.010 に答える