Я играю с аутентификацией 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
процесс на аутентифицироваться с помощью LDAP в удаленном активном каталоге.
Я настроил sssd
для подключения к PAM, что я могу подтвердить с помощью ряда журналов в системе и отладочных данных sssd
, но указанная выше программа работает только для локальных пользователей. Пользователи, которым потребуется аутентификация для sss
, получат PAM_AUTH_ERROR
обратно от pam_authenticate
независимо от того, вводят ли они правильные учетные данные или нет.
Я определенно упускаю что-то очевидное. Как я могу получить доступ к sss
через PAM в программе на языке C?
su
PAM. Вы настроили/etc/pam.d/su
для использованияpam_sss
? - person frasertweedale   schedule 10.12.2015