自定义显示管理器,PAM身份验证失败

时间:2019-07-07 20:48:38

标签: c linux pam

我正在编写一个自定义显示管理器,通过测试,我发现pam_authenticate总是返回PAM_AUTH_ERR。

我尝试使用用户名/密码,密码错误,密码字段为空以及用户名无法识别。所有这些尝试均返回PAM_AUTH_ERR。我是PAM的新手,所以我尝试了其他(强力)方法,例如将return设置为SUCCESS并将True返回给我的登录功能(对pam_authenticate的调用位于其中)。

这是身份验证所在的位置(err()是定义的宏,用于显示错误和“ login(...)”中的“ return False;”。

bool login(const char *username, const char *password, pid_t *child_pid) {
    const char *data[2] = {username, password};
    struct pam_conv pam_conv = {
        conv, data
    };
    int result = pam_start(SERVICE_NAME, username, &pam_conv, &pam_handle);
    if (result != PAM_SUCCESS) {
        err("pam_start");
    }

    result = pam_authenticate(pam_handle, 0);
    //result = PAM_SUCCESS;
    if (result != PAM_SUCCESS) {
        err("pam_authenticate");
        //err("pam_authenticate");
    }
    ...
}

以下是发生的情况:https://i.imgur.com/3291JtW.png

我应该能够登录到用户帐户并继续正常进行。我不希望我的自定义显示管理器可以与复杂的Windows管理器一起使用,因此我正在与DWM进行会话。

谢谢您的帮助。

0 个答案:

没有答案