web-dev-qa-db-ja.com

アカウントにサービスステータスを確認する権限を付与する

新しいアカウントsvchkを作成し、visudoを介して、次のコマンド/ sbin/service postfixstatusを実行する権限を付与しました。

Cmnd_Alias POSTFIXCMDS = /sbin/service postfix status
svchk ALL = NOPASSWD: POSTFIXCMDS

しかし、svchkをsuして/ bin/service postfix statusを実行すると、次のエラーが発生します。

su svchk
/sbin/service postfix status
master status unknown due to insufficient privileges.

なぜこれを取得するのですか?また、後置サービスのステータスを確認するためのsvchk権限を適切に付与するにはどうすればよいですか?

1
Brad

Sudoを介してコマンドを実行するには、次のようにプレフィックスをSudoにする必要があります。

Sudo /sbin/service postfix status
1
dnt

特権のないユーザーがpostfixのステータスを確認できるようにするためにvisudoに配置するコマンドの正しい組み合わせを理解できませんでした。

/etc/init.d/postfixスクリプトを確認すると、statusコマンドが他のコマンドの束を呼び出す可能性があるようです。それに加えて、chrootを使用してサービスが開始されているようです。これにより、アカウントにサービスステータスを確認する権限を付与する際に問題が発生する可能性があります。

代わりに、別の方法でサービスをチェックすることを選択しました。私はvisudoで以下を設定します:

 # Allow the unprivileged account svchk run wc, ps, grp so that we can check if postfix is running
 Cmnd_Alias POSTFIXCMDS = /usr/bin/wc,/bin/ps,/bin/grep
 svchk ALL = NOPASSWD: POSTFIXCMDS

次に、ヘルスチェックスクリプトから次のコマンドを実行しました。psaux| grep/usr/libexec/postfix/master | wc -l

上記のコマンドの結果が2を返す場合(「/ usr/libexec/postfix/master」という単語を含む2つのプロセスの場合、postfixが実行されています。1を返す場合、postfixコマンドは実行されていません。

私はこの解決策に過度に満足しているわけではないので、他の誰かが実際のservice postfix statusコマンドを非特権ユーザーとして機能させるためのより良い方法を持っているなら、私は聞きたいです、そして私はあなたの応答を喜んでマークします回答。

ありがとうブラッド

0
Brad