我尝试创建一个简单的 PAM 模块,打印一些消息,等待 X 秒并返回 PAM_SUCCESS 状态。
首先我尝试使用这个脚本:
#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,但我没有找到适合我的简单示例。