Qual distribuição você está usando? RHEL e CentOS usam pam 0.99. Há atualmente um bug aberto para esse problema ( link ), mas acredito que eles estão usando apenas uma versão antiga do PAM.
Estou tentando usar o módulo pam_exec.so
PAM para executar um script que precisa saber o nome de usuário / senha que vem do aplicativo (OpenVPN, neste caso).
Eu tenho um script que executa printenv >>afile
, mas eu não vejo todas as variáveis de ambiente que o man pages declara que pam_exec.so exporta (ou seja, PAM_USER eu acho), eu só vejo o seguinte:
PAM_SERVICE=openvpn
PAM_TYPE=auth
PWD=/usr/local/openvpn/bin
SHLVL=1
A__z="*SHLVL
Eu pego com sucesso a senha do STDIN e imprimo com este mesmo script. Mas para a vida de mim não consigo o nome de usuário.
Alguma ideia sobre o que devo tentar em seguida?
Qual distribuição você está usando? RHEL e CentOS usam pam 0.99. Há atualmente um bug aberto para esse problema ( link ), mas acredito que eles estão usando apenas uma versão antiga do PAM.
Se você definir pares de valores-chave com o plug-in "openvpn-plugin-auth-pam.so" assim:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so "openvpn mykey login myval COMMONNAME"
então ele não define PAM_USER (porque chama pam_start com user = NULL), talvez esse seja o seu problema?