Como ter o pam_exec executando o script como o usuário atual?

4

Eu preciso executar um script, quando a sessão é aberta, como o usuário que está abrindo a sessão.

Eu adicionei em /etc/pam.d/common-session:

session optional        pam_exec.so      log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh

Eu também tentei ativar a opção seteuid

do pam_exec

O script básico /usr/local/bin/test_pam_foo.sh:

#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo

Infelizmente, recebo todo o tempo 0 como o ID efetivo e o ID real.

Estou sentindo falta de algo?

Como alternativa, eu sei da existência de pam_script , que não deve ser confundido com pam-script .

Esse pam_script é executado por padrão como o usuário atual e tem a opção runas para forçar a execução como raiz. Mas gostaria de privilegiar o uso de pam libs que já estão empacotados na minha distribuição (Ubuntu 12.04).

    
por samb 05.10.2012 / 11:40

1 resposta

2

Bem, você pode ter /usr/local/bin/test_pam_foo.sh

altere o usuário, pois ele está na variável de ambiente PAM_USER .

Cuidado com a nota na página man pam_exec sobre o usuário ter potencialmente controle sobre o ambiente (dependendo de qual serviço o usa (como su )). Portanto, usar um script provavelmente não é uma boa ideia (mesmo se você corrigir $PATH e outras variáveis problemáticas, haverá algumas que você não pode fazer nada, como SHELLOPTS ou BASH_ENV para scripts bash).

Melhor seria usar um wrapper para alterar o usuário antes de chamar seu script.

    
por 05.10.2012 / 12:38

Tags