无法使用pam_set_item设置PAM_AUTHTOK

时间:2015-09-14 18:11:56

标签: unix pam

我正在尝试创建一个简单的显示管理器,因此我需要对用户进行身份验证,因此我开始学习如何使用PAM。我想在没有控制台提示的情况下设置密码,所以我尝试将pam_set_itemAUTHTOK一起使用,但它会抛出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 个答案:

答案 0 :(得分:0)

它说: http://linux.die.net/man/3/pam_set_item

  

PAM_AUTHTOK身份验证令牌(通常是密码)。这个令牌   除了之外,所有模块功能都应该被忽略   pam_sm_authenticate(3)和pam_sm_chauthtok(3)。在前一个功能   它用于从一个传递最新的身份验证令牌   堆叠模块到另一个。在后一种功能中,使用令牌   为了另一个目的。它包含当前活动的身份验证   令牌。

除非您正在实现pam_sm_authenticate或pam_sm_chauthtok函数,否则无法设置PAM_AUTHTOK。