Necesito ejecutar un script, cuando se abre la sesión, como el usuario que abre la sesión.
He agregado en /etc/pam.d/common-session:
session optional pam_exec.so log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh
También intenté activar la opción de pam_exec seteuid
El script básico /usr/local/bin/test_pam_foo.sh :
#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo
Desafortunadamente, recibo todo el tiempo como la identificación efectiva y la identificación real.
¿Me estoy perdiendo algo?
Como alternativa, conozco la existencia de pam_script, que no debe confundirse con pam-script.
Ese pam_script se ejecuta por defecto como el usuario actual y tiene la opción runas para obligar a que se ejecute como root. Pero me gustaría privilegiar el uso de pam libs que ya están empaquetadas en mi distribución (Ubuntu 12.04).
Respuesta aceptada:
Bueno, puedes tener /usr/local/bin/test_pam_foo.sh
cambiar el usuario ya que está en el PAM_USER variable de entorno.
Cuidado con la nota en pam_exec página de manual sobre el usuario que tiene control potencial sobre el entorno (según el servicio que lo use (como su) )). Entonces, usar un script probablemente no sea una buena idea allí (incluso si arregla $PATH y otras variables problemáticas, habrá algunas sobre las que no podrá hacer nada, como SHELLOPTS o BASH_ENV para scripts bash).
Lo mejor sería usar un contenedor que cambie al usuario antes de llamar a su secuencia de comandos.