Potřebuji spustit skript při otevření relace jako uživatel, který relaci otevírá.
Přidal jsem do /etc/pam.d/common-session :
session optional pam_exec.so log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh
Také jsem se pokusil aktivovat pam_exec volbu seteuid
Základní skript /usr/local/bin/test_pam_foo.sh :
#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo
Bohužel neustále dostávám jako efektivní id a skutečné id.
Uniká mi něco?
Jako alternativu znám existenci pam_script, nezaměňovat s pam-script.
Tento pam_script se standardně spouští jako aktuální uživatel a má volbu runas
vynutit spuštění jako root. Ale rád bych upřednostnil používání pam libs, které jsou již zabaleny v mé distribuci (Ubuntu 12.04).
Přijatá odpověď:
Můžete mít /usr/local/bin/test_pam_foo.sh
změnit uživatele, protože je v PAM_USER
proměnná prostředí.
Dejte si pozor na poznámku v pam_exec
manuálová stránka o tom, že uživatel má potenciálně kontrolu nad prostředím (v závislosti na tom, jaká služba jej používá (např. su
)). Takže použití skriptu tam pravděpodobně není dobrý nápad (i když opravíte $PATH
a dalších problematických proměnných, budou některé, se kterými nemůžete nic dělat, jako SHELLOPTS nebo BASH_ENV pro bash skripty).
Nejlepší by bylo použít obal, který změní uživatele před voláním skriptu.