Linuxでログイン/ログアウト時などに pam_exec  で任意のコマンドを実行する

ALL
スポンサーリンク

pam_exec という PAMモジュールは、ログイン・ログアウトや、ssh接続の開始・終了時などの、認証によるセッション開始・終了時に指定のコマンドを実行できます。
Ubuntuではpam_exec をデフォルトで使用することができます。

使用するには、/etc/pam.d/common-session に次のような行を追加します。
pam_exec.so に続けて、実行したいコマンドを指定します。

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

コマンドの実行では、次の環境変数が設定されています。

PAM_SERVICEサービス名。
例えば、ローカルGUIでログインの場合は、gdm-password,gdm-launch-environment になります。su経由では su、ssh経由だと、sshd となります。
PAM_TYPE開始時は open_session
終了時 は close_session
PAM_USERユーザ名
PAM_RHOSTリモートから接続の場合は、リモートホスト名がセットされます。
PAM_TTYTTY名
例えば、ローカルGUIでログインの場合は、/dev/tty1 のようになります。ssh経由だと、ssh となります。

実行例です。

/usr/local/bin/script.sh を次の内容で作成します。
(/usr/local/bin/script.sh は、先の /etc/pam.d/common-session で指定)

#!/bin/bash
echo "$PAM_SERVICE , $PAM_USER , $PAM_RUSER , $PAM_RHOST , $PAM_TTY , $PAM_TYPE" >> /tmp/pam_exec.log
exit 0

作成後、実行権を設定します。

chmod +x /usr/local/bin/script.sh

この状態で、システムにログイン・ログアウトしたり、sshやscp経由で接続・切断してみてください。
/usr/local/bin/script.sh が実行され、/tmp/pam_exec.log に出力がされています。

参考

pam_execを使ってログイン時にメール通知 [tosihisa’s public notebook]
pam_exec(8) – Linux man page

コメント