「sudo」が実行されるたびにスクリプトを実行する方法はありますか?

「sudo」が実行されるたびにスクリプトを実行する方法はありますか?

私はアーチLinuxを使用しています。これは主に商品をインストールし、セキュリティ監視コールの通知をyay受け取るためのものです。sudo

厄介ですが、一般的な問題は、パッケージのインストール中にどこかで呼び出すyay必要があることが多いが、sudo一般的にいつであるかわからず、パスワードプロンプトがなければ、パッケージに対する多くのタスクを再実行する必要があることです。私は忘れてしまうので、5分ごとに確認することを期待しないでください。yay必要に応じて通知を受け取り、sudoパスワードを入力して続行できるようにしたいと思います。

また、明示的に直接実行する必要なしに呼び出されるたびに何が起こっているのかをsudoよりよく確認できるように、呼び出しに関する通知を受けたいと思います。問題が発生した場合は、再追跡できるようにsudo各項目をどこかに記録することをお勧めします。sudo

sudo呼び出されるたびにスクリプトを実行する方法はありますか?

答え1

mesrが提案したPAM統合を考慮すると、私が見ることができる別のオプションは、一意の識別子を使用してsyslogを介してログするようにsudoを設定し、システムのrsyslog / syslog-ngにこれらのメッセージの外部プログラム/スクリプトを呼び出すようにするです。または、/ varの既存のログファイル以外のファイルにログインすることもできます。

例はありませんが、必要に応じて作成できます。

答え2

質問に文字通り答えるには:はい、次の方法があります。Sudoの(Sudoersより正確に言えば、プラグイン)はPAMと統合されます。電話回線を追加するだけですpam_exec.soin /etc/pam.d/sudo、スクリプト目的に適したPAMスタック位置にあります。

しかし、より広い文脈で問題を見ると、スクリプトが必要ない場合があります。別のアプローチは次のとおりです。うん専用の非ログインsudoerで構成Sudoこのユーザーがパスワードなしでコマンドを実行できるようにします。これにより、ログの質問に対する回答も提供されるため、確認できます。Sudoユーザーログとフィルタうん

警告する! ! !もしあなたのアカウントが無効になっています。ビジュド編集するときは強くお勧めします。Sudo構成。

もしうんパッケージのインストール時に専用ユーザーを作成しませんでした。次のコマンドを使用して手動で生成できます。

# useradd --system --home /tmp --shell /bin/nologin yay

次の行/etc/sudoers(またはそのいずれか/etc/sudoers.d/*)を追加するとうんユーザーはパスワードなしですべてのコマンドを実行できます。

yay ALL=(ALL) NOPASSWD: ALL

要件を絞り込むことができればうん固定コマンドセットの場合、次の形式はパスワードなしでそのコマンドのみを受け入れます(リストが長い場合は、次のコマンドを使用してコマンドエイリアスを定義できます)。Cmnd_alias):

yay ALL=(ALL) NOPASSWD: /usr/bin/something, /sbin/another, ...

それから始めることができますうんこのように。最初はパスワードを一度入力する必要がありますが、うんに慣れる:

$ sudo -u yay yay

関連情報