PHP+Apacheから他のユーザとしてパスワードなしでsudoしたい

PHP+Apacheから他のユーザとしてプログラムを実行したい。

まずはsudoの設定変更。

$ su - root
# visudo

Defaults    requiretty
コメントアウト↓
#Defaults    requiretty

root    ALL=(ALL)     ALL
apache ALL=(someone) NOPASSWD: /path/to/bin/dosomething #追加

apacheのユーザがsomeoneの権限でパスワードなし(NOPASSWD)で/path/to/bin/dosomethingを実行できます。

PHP

exec('sudo -u someone /path/to/bin/dosomething', $output);

こんな感じ。