/etc/sudoersにwww-dataを追加すると、PHP shell_exec()はコマンドを実行できません

/etc/sudoersにwww-dataを追加すると、PHP shell_exec()はコマンドを実行できません

私はRaspberry PiのRaspbian(Debianベース)でWebサーバーlighttpdを実行しています。サーバーはwww-dataユーザーとして実行されています(確認ps aux)。次の行を追加しました/etc/sudoers

www-data ALL=NOPASSWD:/opt/vc/bin/vcgencmd

vcgencmdPHPファイルのステータス情報を提供するRaspberry Piでツールを実行する機能

<? echo shell_exec('vcgencmd version'); ?>

sudo印刷されるのは、vcgencmdが無効な権限で実行されたときに表示される「VCHI初期化に失敗しました」(ユーザーが実行したときに表示される予想バージョン情報の代わりに)です。

ランニングを例に挙げましょう。

<? echo shell_exec('cat /sys/class/thermal/thermal_zone*/temp'); ?>

何の変更もなく/etc/sudoers動作するため、PHPに問題(禁止shell_execやその他の問題など)がありません。

コマンドを実行するには何を設定する必要がありますか?

ベストアンサー1

追加したものを使用するには、に/etc/sudoers電話する必要がありますsudo

sudosetuid ビットがセットされたプログラムです。特別なものはまったくありません。つまり、プログラムを開始するたびに介入しないという意味です。

呼び出すことができる理由cat /sys/class/thermal/thermal_zone*/tempは、これらのファイルへの読み取りアクセス権があるためです。ファイルシステム権限の設定方法によっては読み取り権限がある場合がありますが、必ずしも書き込み権限があるわけではありません。

vcgencmd version自分のユーザーが起動したときの理由の2つの可能な説明があります。

  1. あなたのプロフィールにalias vcgencmd='sudo vcgencmd自動的に実行されますsudo
  2. vcgencmdジョブに必要なファイルに対する十分な権限があります。書き込みアクセス権が必要で、そのファイルがあなたが属するグループに属していてそのグループへの書き込みアクセス権がある場合は、sudoは必要ありません。

つまり、コマンドをsudo vcgencmd version

おすすめ記事