Невозможно установить 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.

Другие вопросы по тегам