cとcgiコードで、apache、bind、proftpdなどのlinuxサービスを再起動します。cでのlinuxサービスの再ロード
私は、たとえば、これを行うためのシステムを()を使用します
system ("service httpd reload");
も、私はコンパイルされたプログラムにSUID設定し、それを実行します。権限でエラーを返すことはできません。
どうすればよいですか?
編集: 私のApacheのログのエラー:名前の、proftpdのため
[Wed Dec 21 21:07:13 2011] [error] [client *] cannot remove `/var/run/httpd.pid'
[Wed Dec 21 21:07:13 2011] [error] [client *] : Permission denied
[Wed Dec 21 21:07:13 2011] [error] [client *]
[Wed Dec 21 21:07:13 2011] [error] [client *] touch:
[Wed Dec 21 21:07:13 2011] [error] [client *] cannot touch `/var/lock/subsys/httpd'
[Wed Dec 21 21:07:13 2011] [error] [client *] : Permission denied
と同じログなどここで
システムコールが呼び出すシェルのパスに 'service'がありますか?もしそうでなければ、 "service:command not found"というメッセージが吐き出されます。絶対パスを試してください(例:代わりに '/ usr/sbin/service http reload'を実行してください。 –
これは私の問題ではありません。私は、このサービスが削除または再定義するいくつかのPIDファイルに対してパーミッションエラーを出します。 –