PAM: Como posso criar um serviço que passe nome de usuário / senha para um script?

1

Estou configurando um serviço PAM para o OpenVPN, de modo que o módulo OpenVPN PAM possa autenticar um nome de usuário / senha para um serviço externo que implementarei usando um script de shell.

O módulo OpenVPN PAM informa aproximadamente a seguinte documentação:

plugin openvpn-auth-pam.so "openvpn name USERNAME password PASSWORD"

While "USERNAME" and "PASSWORD" are special strings which substitute to client-supplied values, it is also possible to name literal values to use as PAM module query responses. For example, suppose that the login module queried for a third parameter, "domain" which is to be answered with the constant value "mydomain.com":

Agora eu criei uma configuração do PAM openvpn em /etc/pam.d/openvpn:

auth required pam_exec.so expose_authtok /tmp/outputenv

O que me levou a executar um script e obter a senha do stdin, brilhante, tenho 95% do caminho até lá. Mas eu não tenho acesso ao nome de usuário. Eu verifiquei as variáveis de ambiente e qualquer coisa que eu possa pensar, mas não posso descobrir como eu poderia passar tanto o nome de usuário e senha para o meu script de autenticação externa.

Idéias?

    
por davidparks21 16.06.2011 / 11:21

1 resposta

1

A resposta completa para esta pergunta está publicada aqui:

link

Basicamente, o exemplo na documentação do módulo PAM para openvpn leva você a se perder aqui, ele usa:

plugin openvpn-auth-pam.so "login login USERNAME password PASSWORD"

Mas a configuração correta para o server.config do openvpn é:

plugin /usr/local/openvpn/sbin/openvpn-auth-pam.so "openvpn"

Se você incluir os parâmetros extras mostrados no exemplo de documentação, ele nunca gravará PAM_USER nas variáveis de ambiente conforme esperado com base na documentação do pam_exec.so.

    
por 17.06.2011 / 07:59