Ich muss ein Skript ausführen, wenn die Sitzung geöffnet wird, als der Benutzer, der die Sitzung öffnet.
Ich habe in /etc/pam.d/common-session :
hinzugefügtsession optional pam_exec.so log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh
Ich habe auch versucht, die Option seteuid
von pam_exec zu aktivieren
Das grundlegende Skript /usr/local/bin/test_pam_foo.sh :
#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo
Leider bekomme ich die ganze Zeit als effektive ID und echte ID.
Übersehe ich etwas?
Als Alternative kenne ich die Existenz von pam_script, nicht zu verwechseln mit pam-script.
Dieses pam_script wird standardmäßig als aktueller Benutzer ausgeführt und hat die Option runas
um die Ausführung als root zu erzwingen. Aber ich möchte die Verwendung von Pam-Bibliotheken privilegieren, die bereits in meiner Distribution gepackt sind (Ubuntu 12.04).
Akzeptierte Antwort:
Nun, Sie können /usr/local/bin/test_pam_foo.sh
haben
Ändern Sie den Benutzer, da er sich im PAM_USER
befindet Umgebungsvariable.
Beachten Sie den Hinweis in pam_exec
man-Seite über die potenzielle Kontrolle des Benutzers über die Umgebung (abhängig davon, welcher Dienst sie verwendet (wie su
)). Daher ist die Verwendung eines Skripts dort wahrscheinlich keine gute Idee (selbst wenn Sie $PATH
reparieren und andere problematische Variablen gibt es einige, gegen die Sie nichts tun können, wie SHELLOPTS oder BASH_ENV für Bash-Skripte).
Am besten verwenden Sie einen Wrapper, der den Benutzer ändert, bevor Sie Ihr Skript aufrufen.