pam exec.поэтому не пишет пароль в скрипт, когда включен expose authtok

мы используем PAM для аутентификации с внешним сервером radius. У нас есть следующая строка в /etc/pam.d / common-auth

auth [успех=6 по умолчанию=игнорировать] pam_exec.Итак, expose_authtok /home/cliuser/radiusAuth.sh

пам пишет пароль на stdin скрипта, а также имя пользователя в качестве переменной окружения.

это работало до libpam-modules версии 1.1.1-6.1. После обновления до версии 1.1.3-7.1 пароль становится пустым когда я пытаюсь читать по сценарию. Мы используем open-ssh в качестве ssh сервера.

Спасибо, Prasanth

4
задан Prasanth Ramachandran Pillai
16.05.2023 19:30 Количество просмотров материала 3395
Распечатать страницу

2 ответа

Короткий Ответ:

я испытывал эту проблему, и проблема заключалась в том, что в /etc/ssh/sshd_config была нарушена политика. Мое было то, что AllowUsers был установлен, и я пытался войти в систему как пользователь, который еще не существует в системе.

Больше Ответов

более подробный ответ заключается в том, что пароль был заменен. На самом деле он не был пустым. Так уж получилось, что первая строчка имел не отображаемый символ пробела (^H) и новую строку. Команда read, которую я использовал, считывала только первую строку в переменную. После использования cat на stdin полное содержание (как показано vim с: set list) было

"^H$
^M^?INCORRECT^@"

знак доллара - новая строка.

после некоторого рытья мы нашли это в источнике openssh код

https://github.com/openssh/openssh-portable/blob/df56a8035d429b2184ee94aaa7e580c1ff67f73a/auth-pam.c#L1198

, который показывает пароль перезаписывается

https://github.com/openssh/openssh-portable/blob/df56a8035d429b2184ee94aaa7e580c1ff67f73a/auth-pam.c#L234

, который содержит символы, которые мы ожидали. Комментарии объясняют почему:

/*
 * If the user logging in is invalid, or is root but is not permitted
 * by PermitRootLogin, use an invalid password to prevent leaking
 * information via timing (eg if the PAM config has a delay on fail).
 */

логика проверки, используемая для пометки authctxt->действует в качестве ложного здесь https://github.com/openssh/openssh-portable/blob/df56a8035d429b2184ee94aaa7e580c1ff67f73a/auth.c#L98

который излагает все причины, по которым пользователь/пароль может быть недействительным.

Edit: я обновил ссылки, чтобы заблокировать конкретный коммит, чтобы они оставались правильными. Хотя код изменил поведение не имеет.

6
отвечен uilwen 2023-05-18 03:18

еще одна распространенная ошибка / заблуждение, как получить пароль от pam, который передается на stdin. Самый простой способ, который я видел это

PASS=`cat -`

. Более распространен способ чтения из аргументов, например,$@, $1 и т. д. не работает.

0
отвечен JT Moree 2023-05-18 05:35

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх