ログイン後、pam_execスクリプトを実行してください。

ログイン後、pam_execスクリプトを実行してください。

lastlogユーザーがログインすると、SSHログインを監視する他のアプリケーションで使用できるように、コマンドをカスタムファイルに解析します。

私は/etc/pam.d/sshdその行と一番下の部分を含めました:

session optional pam_exec.so seteuid /usr/local/bin/run_on_login.sh

この作品には大きな欠点が1つあります。スクリプトが以前に実行されたか/var/log/lastlog更新され/var/log/wtmpました。スクリプトを実行するまでは、成功したログインが完了したとは見なされないためです。

糸を入れようとしましたが、/etc/pam.d/loginあまり差がないようです。

完全なログインプロセスが完了した後(ログの書き込みを含む)、pam_execスクリプトを実行する方法はありますか?

答え1

/usr/local/bin/run_on_login.sh最初はバックグラウンドプロセスとして実行され、数秒待ってから、「最後の」コマンドを解析する別のスクリプトをフォークしてこの問題を解決できました。

たとえば、pam_exec は次のスクリプトを実行します。

#!/bin/bash
# /usr/local/bin/run_on_login.sh

nohup /usr/local/bin/parse_last.sh >/dev/null 2>&1 &

このスクリプトのトリガーは次のとおりです。

#!/bin/bash
# /usr/local/bin/parse_last.sh

sleep 5

# (truncated for brevity)
last -iF | head -n 50 | awk '{print "something"}'

関連情報