Я пытаюсь использовать pam_exec.so
Модуль PAM для выполнения сценария, которому необходимо знать имя пользователя / пароль, исходящие от приложения (в данном случае OpenVPN).
У меня есть сценарий, который выполняет printenv >>afile
, но я не вижу всех переменных среды, которые на страницах руководства указываются, которые экспортирует pam_exec.so (а именно PAM_USER, я думаю), я вижу только следующее:
PAM_SERVICE=openvpn
PAM_TYPE=auth
PWD=/usr/local/openvpn/bin
SHLVL=1
A__z="*SHLVL
Я успешно взял пароль от STDIN и вывел его с помощью того же сценария. Но хоть убей, я не могу получить имя пользователя.
Есть мысли о том, что мне попробовать дальше?
Если вы установите пары ключ-значение с помощью плагина "openvpn-plugin-auth-pam.so" следующим образом:
плагин /usr/lib/openvpn/openvpn-plugin-auth-pam.so "openvpn mykey myval login COMMONNAME"
тогда он не устанавливает PAM_USER (потому что он вызывает pam_start с user = NULL), может быть, это ваша проблема?
Какой дистрибутив вы используете? RHEL и CentOS используют pam 0.99. В настоящее время для этой проблемы открыта ошибка (https://bugzilla.redhat.com/show_bug.cgi?id=554518), но я считаю, что они просто используют старую версию PAM.