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.