Я пытаюсь написать программу, аутентифицирующую пользователя с помощью pam и записывающую его пароль в файл (в данный момент просто распечатайте его).Но даже при успешной аутентификации пароль не сохраняется
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <stdio.h>
#include <stdlib.h>
static struct pam_conv conv = {
misc_conv,
NULL
};
int main(int argc, char *argv[])
{
pam_handle_t *pamh=NULL;
int retval;
const char *user=argv[1];
char *get_user;
char *get_pass;
retval = pam_start("check_user", user, &conv, &pamh);
if (retval == PAM_SUCCESS)
retval = pam_authenticate(pamh, 0);
pam_get_item(pamh, PAM_AUTHTOK, (const void **)(const void*)&get_pass);
pam_get_item(pamh, PAM_USER, (const void **)(const void*)&get_user);
printf("user: %s\n", get_user);
printf("password: %s\n", get_pass);
if (retval == PAM_SUCCESS) {
fprintf(stdout, "Authenticated\n");
} else {
fprintf(stdout, "Not Authenticated\n");
}
if (pam_end(pamh,retval) != PAM_SUCCESS)
pamh = NULL;
}
Файл PAM выглядит следующим образом:
auth required pam_unix.so
account required pam_unix.so
Запуск его с правильным паролем:
./a.o kuku
Password:
user: kuku
password: (null)
Authenticated
Запуск с неверным паролем:
./a.o kuku
Password:
user: kuku
password: (null)
Not Authenticated
Есть идеи?