以下を使用するときに参照する/usr/local/bin
スクリプトがあります。/etc/pam.d/su
session optional pam_exec.so stdout /usr/local/bin/script.sh
fromでログインするとuser
期待どおりに実行されますが、orでログインしても機能します。ログアウト時に実行を停止するにはどうすればよいですか?root
su - user
exit
logout
user
答え1
マニュアルからpam_exec(8)
:
説明する
pam_execは、外部コマンドの実行に使用できるPAMモジュールです。
子環境は、pam_getenvlist(3)によって返された現在のPAM環境のリストに設定されます。次のPAMエントリは環境変数としてエクスポートされます。:
PAM_RHOST
、、、、、PAM_RUSER
PAM_SERVICE
PAM_TTY
PAM_USER
PAM_TYPE
、モジュールタイプ のいずれかを含みます:account
、、、、auth
password
open_session
そしてclose_session
。[...]
PAM_TYPE
環境変数にその値が含まれていないかスクリプトを確認しclose_session
、それ以外の場合は終了します。
答え2
@ABの答えに基づいて欲しいものを得るために、スクリプトの先頭に次の行を追加しました。
if [[ $PAM_TYPE == "close_session" ]]; then
exit 0
fi