Я играл с аутентификацией РАМА с помощью небольшой программы C:Как я могу запросить sssd через PAM в программе на C?
#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_AUTH_ERROR
с pam_authenticate
, внесите ли они правильные учетные данные или нет.
У меня наверняка отсутствует что-то очевидное. Как я могу получить доступ к sss
через PAM в программе на C?
Использование используют 'su' службы PAM. Вы настроили '/ etc/pam.d/su' использование' pam_sss'? – frasertweedale
@frasertweedale - туда мы идем. Я изменил его на сервис «login», и он сработал. Если вы опубликуете это в качестве ответа, я с радостью продолжу его, иначе я смогу опубликовать ответ самостоятельно. – Christopher
Спасибо, я отправил ответ. Рад быть полезным :) – frasertweedale