Apacheを介してユーザーとして実行されるexec('supervisorctl status 2>&1', $output);
呼び出しPHPスクリプトがあります。www-data
ただし、このユーザーはコマンドにアクセスできません。このコマンドに対してのみwww-data
権限を許可したいと思います。supervisorctl status
実行中のスーパーバイザープロセスを非常に見事に出力し、それをWebインターフェースに表示したいと思います。
# Running `supervisorctl status` under any user except root:
$ supervisorctl status
error: <class 'socket.error'>, [Errno 13] Permission denied: file: /usr/lib/python2.7/socket.py line: 228
/etc/sudoers
このセクションをファイルに追加しようとしましたが、(を使用してvisudo
)同じエラーが発生しました(エラーがPythonを参照しているため、より多くの権限が必要になる場合があります)。
# /etc/sudoers
Cmnd_Alias SUPERVISOR_STATUS = /usr/bin/supervisorctl status
www-data ALL=(ALL) NOPASSWD: SUPERVISOR_STATUS
ベストアンサー1
私はそれを働かせた。明らかに何かを定義するとき、/etc/sudoers
これはcallコマンドを使用することを意味しますsudo
。
したがって、PHPで実行するには、次のようにします。
exec('sudo supervisorctl status 2>&1', $output);
この機能はwww-data
。