Phpスクリプトからサービスを再開できるようにしたい。 www-userアカウントで実行されています。
これらのアクションを実行するための好ましい方法は何ですか?
Que'dコマンドを使用してファイルを作成し、CRONで読み取ることができると思いますが、解決策がかゆくなります。
私が考えているのは、ルートの下で実行される小さなサービスであり、事前定義された「メソッド」を許可して、任意のルートアクションを実行できないようにします。
このためのツールはありますか?
車輪の再発明をすることもできますが、正直なところ、これにはパスワードなしのSudoを使用します。たとえば、私の監視システムは、ハードウェアRAIDをチェックするコマンドを実行できる必要があります。これにはroot権限が必要ですが、監視システム全体をrootとして実行したくないので、代わりにsudoers
に次のような行があります。
nagios ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid
次に、RAIDを確認する必要があるときに、監視ユーザーとしてコマンドSudo /usr/lib/nagios/plugins/check_md_raid
を実行します。
あなたは言ったsudoersラインを持つことができます
www-user ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice
次に、phpにSudo /etc/rc.d/init.d/myservice restart
を実行させます。
Sudo を見てください:別のユーザー(あなたの場合はroot)として実行できるアクションを指定できます。
たとえば、your/etc/sudoers
に追加できます(visudo
を使用してファイルを直接編集しないでください)
www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction
ファイルの詳細と構文については、man Sudo
を参照してください。