私は、アクセス権の巨大な穴を開けたり、ファイルのユーザー所有権を変更したりすることによって、これを行う多くの疑問を見つけました。私の現在のアプリケーションでは、どちらもオプションではありません。私がやろうとしているのは、私のウェブページ上のボタンがクリックされたときに、shell_execまたは類似のPHP関数を使用して、システム上の全く別のフォルダに.shスクリプトを実行することです。 。このスクリプトは、それがであるフォルダから実行する必要があり、私は、debianの午前とapacheのユーザーがこれらの行追加してコマンドを実行できるようにsudoをインストールしている:所有していないフォルダのapacheユーザーからスクリプトを実行するには?
www-data ALL=(ALL) NOPASSWD:/opt/folder/run.sh start
www-data ALL=(ALL) NOPASSWD:/opt/folder/run.sh stop
www-data ALL=(ALL) NOPASSWD:/opt/folder/run.sh status
run.shは私が何かではありませんallowdは編集できるので、可能であればapacheの終わりでこれを管理する必要があります。 run.shのパーミッションや所有権を変更することはできません。あなたは私のジレンマを見ることができます。私が使用しているPHPコールは次のようになります。
$test=shell_exec('cd /opt/folder/ && ./run.sh start&& cd -');
私は$ testを使ってコマンドの出力をエコーしています。ここでそれは奇妙になる。コマンドからの出力が良好です。 run.shスクリプトは、他のプログラムのリストの開始と停止、およびその状態の表示に使用されます。私は./run.sh status
を実行し、$ test変数に良い結果を戻すことができます。私が./run.sh stop
を試してみると、それはうまくいっていると言います(run.shスクリプトにはたくさんのチェックが組み込まれていないと確信していますが)。私は正常性チェックとしてps -ef | grep
を実行し、停止されるはずだったすべてのプロセスを見ることができます。 ./run.sh start
を実行しても同じですが、開始されたプログラムはありません。
だから、私が間違っていることを理解しようとしているだけです。私はPHPがbashスクリプトを実行していると確信していますが、何らかの理由で実際にスクリプト内の開始コマンドまたは停止コマンドを実行する能力がありません。 run.shをOSからrootとして完全に実行できます。私は本当にこのロープの端にありますので、どんな助けも非常に高く評価されています。これが不可能な場合は、別のプログラムのインストールが必要ない代替手段があります。