「www-data」が「supervisorctl status」を呼び出すことを許可する方法は?

「www-data」が「supervisorctl status」を呼び出すことを許可する方法は?

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

おすすめ記事