- 締切済み
system関数で一部のプログラムしか起動できない
タイトルの通りです。 実行環境は、Apache2+PHP4です(玄箱・Debian)。 system関数を使ってあるプログラムの実行結果をそのまま出力したいと考えています。 しかし、できるプログラム(コマンド)と、できないコマンドがあるのです。 system('df -h', $retval);などというように、dfやlsなどは結果が出るのですが、hddtemp、自前のシェルなどはうまく結果が出ません。 ただ、$retvalは0が出力されます。 状況の切り分けのため、「whoami」を実行したところ結果がうまく出力され、「www-data」と出るので、rootからwww-dataにログインし、hddtempを実行してみたところ、「コマンドが見つかりません」と出ます。ちなみにwww-dataはログイン可能ユーザー?ではありません。(/homeにディレクトリのないユーザー) dfやlsなどはwww-dataユーザーでも実行可能でした。 つまり、dfやlsと同じような状況をhddtempや自前シェルに適用したいのですが、どうしたらよいでしょうか。 何かヒントをお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- masa6272
- ベストアンサー率66% (93/140)
回答No.3
7にするのが一番楽ですね。 ただ、そのファイルだけではなく、上位のディレクトリも変える必要がありますね。 となると、セキュリティの問題が・・・ hddtempのようなコマンドは、誰でもアクセスできるようにするのと、自前シェルはwww-dataがオーナーのディレクトリを作ってそこにおいてはどうでしょう?
補足
回答ありがとうございます。 やっぱりアクセス権ですよね・・・。具体的にはどうすればよいでしょうか?www-dataだから、プログラム実行に使用するディレクトリ・ファイルをを、chmodで3番目の数値を7にすればいいですかね? 実行可能だから1でもOKですかね? もしよろしければ追加ヒントください!