2016-04-03 6 views
1

私はUbuntuでApache 2.4を使用しています。私はC言語で1つのモジュールを作成し、Apache Extensionツール(apxs)を使用してApacheサーバーに統合しました。 exec関数を使用して実行可能ファイルを呼び出すコードの一部がありますが、その実行可能ファイルをスーパーユーザーとして呼び出す必要があります。スーパーユーザー権限でモジュールを実行したいのですが、デフォルトでApacheはwww-dataユーザーとして実行されており、www-dataのパスワードを要求しています。スーパーユーザー権限でApacheモジュールを実行するには?

スーパーユーザー権限でこのモジュールを実行する方法はありますか?

Apacheモジュール内でCでrootコマンドを実行する方法はありますか?

これにはsuExecモジュールを使用できますか?

+1

なぜ単にルートを呼び出した実行可能ファイルの所有者にし、実行可能ファイルに対してchmod u + sも実行しないのはなぜですか?ただし、アクセス可能なWebサーバーから呼び出されたときには、rootとしてバイナリを実行するように注意してください。 –

答えて

0

いいえ、Apacheサーバー自体とは別のユーザーでApacheモジュールを実行することはできません。しかし、その限界を回避するにはいくつかの戦略があります。

1)あなたはこのように、Apacheのから実行したい実行ファイルの「setuid bit」を設定することができます。

chown root:root executable 
chmod 06755 executable 

その後、あなたはこの実行可能ファイル(たとえば、fork + exec持つかsystemとを実行すると)をApacheモジュールから削除すると、実行可能ファイルはroot権限で実行されます。

2)/etc/sudoersファイルは、www-dataがsudoコマンドの助けを借りてroot権限で問題の実行可能ファイルを実行できるように設定できます。

3)ルート権限で動作し、Apacheモジュールから任意の種類のIPC/RPCコマンドを受信する別個のプロセスを実行できます。

ルート権限でコードを実行するとセキュリティリスクが発生する可能性がある場合は、ルート権限を使用しないでください。もちろん、コードにバグがないことを絶対に確信している場合を除きます。

+0

2番目のオプションを適用しました。現在は正常に動作しています –

関連する問題