Невозможно установить PAM_AUTHTOK с помощью pam_set_item
Я пытаюсь сделать простой диспетчер отображения, поэтому мне нужно аутентифицировать пользователя, чтобы я начал изучать, как использовать PAM. Я хотел бы установить пароль без подсказки консоли, поэтому я попытался использовать pam_set_item
с AUTHTOK
но выдает ошибку Bad Item... Вот минимальный пример:
#include <security/pam_appl.h>
#include <stdio.h>
int main()
{
struct pam_conv conversation;
pam_handle_t* pam_handle;
int status = pam_start("test_pam", "myusername", &conversation, &pam_handle);
char* password = "mypassword";
status = pam_set_item(pam_handle, PAM_AUTHTOK, password);
printf("Error: %s\n", pam_strerror(pam_handle, status));
status = pam_end(pam_handle, status);
}
Знаете ли вы, как я могу отправить пароль в PAM, не вводя его из консоли?
1 ответ
Там написано: http://linux.die.net/man/3/pam_set_item
PAM_AUTHTOK Токен аутентификации (часто пароль). Этот токен должен игнорироваться всеми функциями модуля, кроме pam_sm_authenticate(3) и pam_sm_chauthtok(3). В предыдущей функции он используется для передачи самого последнего токена аутентификации от одного стекового модуля другому. В последней функции токен используется для другой цели. Он содержит текущий активный токен аутентификации.
Так что вы не можете установить PAM_AUTHTOK, если вы не реализуете функции pam_sm_authenticate или pam_sm_chauthtok.