Ho bisogno di eseguire uno script, quando la sessione è aperta, come l'utente che sta aprendo la sessione.
Ho aggiunto in /etc/pam.d/common-session :
session optional pam_exec.so log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh
Ho anche provato ad attivare l'opzione seteuid
di pam_exec
Lo script di base /usr/local/bin/test_pam_foo.sh :
#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo
Sfortunatamente, ricevo sempre come ID effettivo e ID reale.
Mi sono perso qualcosa?
In alternativa, conosco l'esistenza di pam_script, da non confondere con pam-script.
Quel pam_script viene eseguito per impostazione predefinita come utente corrente e ha l'opzione runas
per forzare l'esecuzione come root. Ma vorrei privilegiare l'uso delle librerie pam che sono già incluse nella mia distribuzione (Ubuntu 12.04).
Risposta accettata:
Bene, puoi avere /usr/local/bin/test_pam_foo.sh
cambia l'utente poiché è nel PAM_USER
variabile di ambiente.
Fai attenzione alla nota in pam_exec
pagina man sull'utente che ha potenzialmente il controllo sull'ambiente (a seconda del servizio che lo utilizza (come su
)). Quindi usare uno script probabilmente non è una buona idea (anche se correggi $PATH
e altre variabili problematiche, ce ne saranno alcune su cui non puoi fare nulla, come SHELLOPTS o BASH_ENV per gli script bash).
La cosa migliore sarebbe usare un wrapper cambia l'utente prima di chiamare il tuo script.