【发布时间】:2015-12-06 17:22:17
【问题描述】:
我正在使用一个小型 C 程序进行 PAM 身份验证:
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <stdlib.h>
int main()
{
pam_handle_t* pamh;
struct pam_conv pamc;
pamc.conv = &misc_conv;
pamc.appdata_ptr = NULL;
pam_start("su", getenv("USER"), &pamc, &pamh);
if (pam_authenticate(pamh, 0) != PAM_SUCCESS) {
fprintf(stderr, "Auth failed!\n");
} else {
fprintf(stderr, "Auth succeeded!\n");
}
pam_end(pamh, 0);
return 0;
}
有两种用户可以访问我的系统,一种是在本地影子数据库中创建的,另一种是遍历配置的sssd 进程到authenticate with LDAP against a remote active directory. 的用户
我已将sssd 配置为插入 PAM,我可以通过系统上的一些日志和sssd 的调试输出来确认这一点,但上述程序仅适用于本地用户。需要对 sss 进行身份验证的用户会从 pam_authenticate 返回 PAM_AUTH_ERROR,无论他们输入的凭据是否正确。
我肯定遗漏了一些明显的东西。如何在 C 程序中通过 PAM 访问sss?
【问题讨论】:
-
使用正在使用
suPAM 服务。您是否将/etc/pam.d/su配置为使用pam_sss? -
@frasertweedale -- 我们开始了。我将其更改为“登录”服务并且它有效。如果您将其发布为答案,我会很乐意投票,否则我可以自己发布答案。
-
谢谢,我发布了答案。很高兴能提供帮助:)