pam_exec.soを見てください。PAMのsystem-authのセッションインターフェイスでログイン時にスクリプトを実行できます。スクリプトは、ユーザーがシェルを取得する前にルートとして実行されるため、read
?を使用して入力をキャプチャしない場合があります。ただし、read
ユーザーから理由を取得し、logger
ステートメントを使用してsyslogに記録するために使用できます。(以下では省略しましたが、理由なく終了することを防ぐためにCTRL + Cをトラップすることができます。)$ PAM_USERはログインしたユーザーに設定されるため、ロガーステートメントに含めることができます。
例:
/etc/pam.d/system-authのセッションの先頭:
session required pam_exec.so /usr/local/sbin/getreason
/ usr / local / sbin / getreason:
#!/bin/bash
read -p "Reason for logging into production: " reason
logger -t $(basename $0) "$PAM_USER logged in with reason: ${reason}"
これが完全に機能しない場合はおApび申し上げます。私はそれをテストしませんでしたが、最近似たようなことをしました。(入力をキャプチャしませんでした。)
編集:これについて考えれば考えるほど、それが実行される段階のために機能するとは思わない。同じgetreason
スクリプトでは、交換後動作するはず$PAM_USER
で$(logname)
、それはで実行する必要があるかもしれません/etc/profile
。(最初に対話型シェルをテストします。)
少なくとも他に何もなければ正しい方向に考えさせるために、両方のオプションを残しておきます。