私は、認証されたユーザーから多数のパラメーター(ドロップダウンボックスなど)を取得し、ファイルを作成し、そのファイルをstdin経由でWebサーバー上のプログラムに配信するWebアプリを開発しています。
サーバー側プログラムにはいくつかの制限があるため、Apacheで汎用のApacheユーザーとしてではなく、以前に認証されたユーザーとしてそのサーバー側プログラムを実行したいと思います。
したがって、たとえば、ユーザーfooがログインし(バックエンドでmod_authz_ldapを使用)、フォームに入力する場合、フォームはサーバー上でユーザーApacheではなくユーザーfooとしてコマンドを実行する必要があります。
これは可能ですか?
通常、CGIスクリプトはWebサーバーのユーザーとして実行されます。しかし、多くの(ほとんどの?)Webホストは suEXEC を使用して、CGIスクリプトを別のユーザーとして実行します。
ただし、suEXECは通常、vhostまたはプログラムが存在するユーザーディレクトリに基づいて、異なるユーザーとしてスクリプト/プログラムを実行するために使用されます。プログラムを実行するユーザーを動的に選択できるかどうかはわかりません。
しかし、あなたができることは、異なる仮想ホストまたはユーザーディレクトリにある各プログラムの異なるコピーを持ち、認証プロセスを使用して実行するプログラムのコピーを選択し、同じことを効果的に達成することです。
パスワードなしでスクリプトを実行する特定のユーザーアクセスを与えるために、sudoersファイルにエントリを作成しました。スクリプトを実行しているユーザーを動的に設定するのは簡単だとは思いません。 sudoersファイルを編集して、別のエディターではなくvisudoを使用する場合は注意してください。破損して、再起動してルートシェルにドロップして行を削除できない場合は、suを実行してください。