Диспетчер пользовательских дисплеев, ошибка аутентификации PAM - PullRequest
0 голосов
/ 07 июля 2019

Я пишу собственный менеджер дисплеев, и во время тестирования я обнаружил, что pam_authenticate всегда возвращает PAM_AUTH_ERR.

Я испробовал мое имя пользователя / пароль, неверный пароль, пустое поле пароля и нераспознанное имя пользователя. Все эти попытки вернули PAM_AUTH_ERR. Я очень новичок в PAM, поэтому я попробовал другие (грубой силы) методы, такие как установка возврата в SUCCESS и возвращение True моей функции входа в систему (где находится вызов pam_authenticate).

Здесь находится аутентификация (err () - это определенный макрос для вывода ошибки и «return False;» в «login (...)».

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.

Я должен иметь возможность войти в учетную запись пользователя и продолжить работу в обычном режиме. Я не ожидаю, что мой пользовательский менеджер дисплеев будет работать со сложным диспетчером окон, поэтому я использую сеанс с DWM.

Спасибо за любую помощь.

...