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_TTY | TTY名 例えば、ローカル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
コメント