suとしてログインした場合にのみPAMスクリプトを実行する

suとしてログインした場合にのみPAMスクリプトを実行する

以下を使用するときに参照する/usr/local/binスクリプトがあります。/etc/pam.d/su

session  optional  pam_exec.so  stdout  /usr/local/bin/script.sh

fromでログインするとuser期待どおりに実行されますが、orでログインしても機能します。ログアウト時に実行を停止するにはどうすればよいですか?rootsu - userexitlogoutuser

答え1

マニュアルからpam_exec(8):

説明する

pam_execは、外部コマンドの実行に使用できるPAMモジュールです。

子環境は、pam_getenvlist(3)によって返された現在のPAM環境のリストに設定されます。次のPAMエントリは環境変数としてエクスポートされます。PAM_RHOST、、、、、PAM_RUSERPAM_SERVICEPAM_TTYPAM_USERPAM_TYPE、モジュールタイプ のいずれかを含みます:account、、、、authpasswordopen_session そしてclose_session

[...]

PAM_TYPE環境変数にその値が含まれていないかスクリプトを確認しclose_session、それ以外の場合は終了します。

答え2

@ABの答えに基づいて欲しいものを得るために、スクリプトの先頭に次の行を追加しました。

if [[ $PAM_TYPE == "close_session" ]]; then  
   exit 0  
fi

関連情報