![如何让 pam_exec 以当前用户身份运行脚本?](https://linux22.com/image/26088/%E5%A6%82%E4%BD%95%E8%AE%A9%20pam_exec%20%E4%BB%A5%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
当会话打开时,我需要以打开会话的用户身份运行脚本。
我在 /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)。
最好是在调用脚本之前使用包装器更改用户。