Je dois exécuter un script, lorsque la session est ouverte, en tant qu'utilisateur qui ouvre la session.
J'ai ajouté dans /etc/pam.d/common-session :
session optional pam_exec.so log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh
J'ai également essayé d'activer l'option seteuid de pam_exec
Le script de base /usr/local/bin/test_pam_foo.sh :
#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo
Malheureusement, je reçois tout le temps comme identifiant effectif et identifiant réel.
Ai-je raté quelque chose ?
Comme alternative, je connais l'existence de pam_script, à ne pas confondre avec pam-script.
Ce pam_script s'exécute par défaut en tant qu'utilisateur actuel et a l'option runas pour forcer à être exécuté en tant que root. Mais j'aimerais privilégier l'utilisation des bibliothèques pam qui sont déjà empaquetées dans ma distribution (Ubuntu 12.04).
Réponse acceptée :
Eh bien, vous pouvez avoir /usr/local/bin/test_pam_foo.sh
changer l'utilisateur puisqu'il est dans le PAM_USER variable d'environnement.
Attention à la note dans pam_exec page de manuel sur l'utilisateur ayant potentiellement le contrôle sur l'environnement (selon le service qui l'utilise (comme su )). Donc, utiliser un script n'est probablement pas une bonne idée (même si vous corrigez $PATH et d'autres variables problématiques, il y en aura certaines auxquelles vous ne pourrez rien faire, comme SHELLOPTS ou BASH_ENV pour les scripts bash).
Le mieux serait d'utiliser un wrapper pour changer l'utilisateur avant d'appeler votre script.