Как преобразовать мой цикл For в последовательное выполнение

нашел проблему в:https://www.linuxquestions.org/questions/programming-9/can%27t-get-auth-token-for-non-local-users-with-pam-module-945164/в основном проблема в том, что невозможно получить пароль от неизвестного пользователя, Linux PAM заменит пароль на "\b\n\r\177INCORRECT", если не сможет получить информацию о пользователе из системных баз данных (Переключатель службы имен, см. man nsswitch.conf ). возможный обходной путь проверки с помощью getpawn, что пользователь действительно существует. пример:

/* The actual pam functions are merely wrappers around succeed_if */
PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
    const char * password=NULL;
    struct passwd *pwd;
    const char *user;
    int pam_err=0;
    /* identify user */
    pam_err = pam_get_user(pamh, &user, NULL);
    if (pam_err != PAM_SUCCESS)
    {
        return (pam_err);
    }
    if ((pwd = getpwnam(user)) == NULL)
    {
        return (PAM_USER_UNKNOWN);
    }
    /*note : if user is not deefined pawsword return will be "^H$^M^?INCORRECT^@" */
    pam_err  = pam_get_authtok(pamh, PAM_AUTHTOK, &password, NULL);
    if (pam_err!=PAM_SUCCESS)
    {
        return (pam_err);
    }

    /*here add personal auhtentication */
    pam_err = isAuthenticate((char *)user,(char *)password);
    if (pam_err != PAM_OK)
    {
        return (PAM_AUTH_ERR);
    }

    return (PAM_SUCCESS);
}

0
22.01.2020, 12:14
1 ответ

Причина такого поведения заключается в том, что вы включили &в конце своей команды, которая переводит команду в фоновый режим и сразу же переходит к следующей.

Цикл должен вести себя так, как вы предполагали, когда вы удалите этот &. Обратите внимание, что вместо этого вы должны поместить ;, чтобы закончить эту инструкцию (, если поместите все это в одну строку, как первоначально было опубликовано ), иначе оболочка выдаст сообщение об ошибке.

Кроме того, как указал Стефан Шазела, вы должны иметь привычку цитировать раскрытия переменных (там, где это уместно, что в большинстве случаев ); хорошее введение можно найти здесь .

4
28.01.2020, 02:17

Теги

Похожие вопросы