pam:ログイン時の作業(失敗)

pam:ログイン時の作業(失敗)

に渡す方法を知っていますが、/etc/profileログインが成功した後にのみ実行されます。ログインに失敗しても操作を実行できるようにしたいと思います。たとえば、スクリプトを実行しますscript.sh

で設定できると思いますが、pamどこから始めるべきかわかりません。

ベストアンサー1

pam_execモジュールといくつかのトリックを使用してPAMこれを行うことができます。PAM構成はディストリビューションによって大きく異なる場合が多いため、構成を理解して調整する必要があります。

Debianの場合(7.1でテスト済み)編集/etc/pam.d/common-auth(明確にするためにコメントは省略)

  • 今後

    auth    [success=1 default=ignore]    pam_unix.so nullok_secure
    auth    requisite                     pam_deny.so
    auth    required                      pam_permit.so
    
  • 後ろに

    auth    [success=2 default=ignore]    pam_unix.so nullok_secure
    auth    optional                      pam_exec.so /common-auth-pam_exec
    auth    requisite                     pam_deny.so
    auth    required                      pam_permit.so
    

実際に起こるのは、成功するpam_unix.soと次の2つのモジュールをスキップし、常にpam_permit.so成功したモジュールにジャンプすることです。認証に失敗した場合は、PAMまずスクリプトを実行してから実行してください。このモジュールは常に失敗し、制御フラグをpam_deny設定するため、他のモジュールは実行されません。requisite

完全性のために、プログラムはpam_exec呼び出しプロセスの実際のユーザーIDで実行することによって生成されます(setuidオプションは有効なユーザーIDで実行されます)、プロセス環境は次のとおりです。

PAM_SERVICE=login
PAM_RHOST=
PAM_USER=<username_here>
PAM_TYPE=auth
PAM_TTY=/dev/tty1

おすすめ記事