我试图制作一个简单的显示管理器,因此我需要对用户进行身份验证,因此我开始学习如何使用PAM。我想在没有控制台提示的情况下设置密码,所以我尝试在AUTHTOK中使用AUTHTOK,但是它会引发一个坏的项错误.下面是一个很小的例子:
#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而不必从控制台提示符中输入密码吗?
发布于 2016-07-18 15:59:18
上面写着:item
PAM_AUTHTOK身份验证令牌(通常是密码)。除了pam_sm_authenticate(3)和pam_sm_chauthtok(3)之外,所有模块函数都应该忽略此令牌。在前一个函数中,它用于将最近的身份验证令牌从一个堆叠模块传递到另一个。在后一个函数中,令牌被用于另一个目的。它包含当前活动的身份验证令牌。
这样就不能设置PAM_AUTHTOK,除非您正在实现pam_sm_authenticate或pam_sm_chauthtok函数。
https://stackoverflow.com/questions/32571233
复制相似问题