いくつかのメッセージを印刷してX秒待ってからPAM_SUCCESS状態を返す単純なPAMモジュールを作成しようとしています。
まず、次のスクリプトを試してみました。
#include <security/pam_appl.h>
#include <security/pam_modules.h>
#include <security/pam_misc.h>
#include <security/pam_ext.h>
#include <unistd.h>
PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
pam_info(pamh, "Test message" );
sleep(3);
return PAM_SUCCESS;
}
PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv) {
return PAM_SUCCESS;
}
PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags, int argc, const char **argv) {
return PAM_SUCCESS;
}
PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, int argc, const char **argv ) {
return PAM_SUCCESS;
}
しかし、モジュールがPAM_SUCCESSを返した後に私のメッセージを表示するので、これは最善ではありません。
pam_convを使用する必要があるようですが、私に合った簡単な例が見つかりませんでした。