当会话打开时,我需要以打开会话的用户身份运行脚本。
我在 /etc/pam.d/common-session 中添加了:
session optional pam_exec.so log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh
我还尝试激活 pam_exec 的选项seteuid
基本脚本 /usr/local/bin/test_pam_foo.sh :
#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo
不幸的是,我一直得到0
有效id和真实id。
我错过了什么吗?
pam_script 默认以当前用户身份运行,并且可以选择runas
强制以 root 身份运行。但我想优先使用已打包在我的发行版(Ubuntu 12.04)中的 pam 库。
答案1
嗯,你可以有/usr/local/bin/test_pam_foo.sh
更改用户,因为它位于PAM_USER
环境变量中。
请注意手册pam_exec
页中有关用户对环境具有潜在控制权的注释(取决于使用它的服务(如su
))。因此,使用脚本可能不是一个好主意(即使您修复了$PATH
其他有问题的变量,也会有一些您无能为力,例如 bash 脚本的 SHELLOPTS 或 BASH_ENV)。
最好是在调用脚本之前使用包装器更改用户。