#include #include #include #include #include // PAM 认证函数 PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) { // 获取用户名 const char *username = NULL; int nret = pam_get_item(pamh, PAM_USER, (const void **)&username); pam_syslog(pamh, LOG_WARNING, "in test login,get username..%s..ret:%d.....", username, nret); if (nret != PAM_SUCCESS) { return PAM_AUTH_ERR; } // 获取密码 const char *password = NULL; int retpwd = pam_get_item(pamh, PAM_AUTHTOK, (const void **)&password); if (retpwd == PAM_SUCCESS) { pam_syslog(pamh, LOG_WARNING, "password: %s", password); } else { pam_syslog(pamh, LOG_WARNING, "get password failed: %d", retpwd); } for (int i = 0; i < argc; i++) { pam_syslog(pamh, LOG_WARNING, "input parameter: %s", argv[i]); } return PAM_SUCCESS; } PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv) { pam_syslog(pamh, LOG_WARNING, "in test login,pam_sm_setcred...., flags:%d, argc:%d", flags, argc); for (int i = 0; i < argc; i++) { pam_syslog(pamh, LOG_WARNING, "input parameter: %s", argv[i]); } return PAM_SUCCESS; }