• 締切済み

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や自前シェルに適用したいのですが、どうしたらよいでしょうか。 何かヒントをお願いします。

みんなの回答

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.3

7にするのが一番楽ですね。 ただ、そのファイルだけではなく、上位のディレクトリも変える必要がありますね。 となると、セキュリティの問題が・・・ hddtempのようなコマンドは、誰でもアクセスできるようにするのと、自前シェルはwww-dataがオーナーのディレクトリを作ってそこにおいてはどうでしょう?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

・パスが通ってないもしくはわからないのであればフルパスで指定。 ・場合によってはsudoやsuEXECで個別に実行権限をつけてやる。 という対応で

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

パスの設定と、場合によっては権限の問題でしょう。 www-rootでログインして、hddtemp、自前シェルを / からの完全なパスで指定してください。見つかるはずです。 後は、アクセス権の設定ですね。自前シェルのアクセス権、それが置いてあるディレクトリのアクセス権など、注意してください。

ooi2-23
質問者

補足

回答ありがとうございます。 やっぱりアクセス権ですよね・・・。具体的にはどうすればよいでしょうか?www-dataだから、プログラム実行に使用するディレクトリ・ファイルをを、chmodで3番目の数値を7にすればいいですかね? 実行可能だから1でもOKですかね? もしよろしければ追加ヒントください!