如何让 pam_exec 以当前用户身份运行脚本?

如何让 pam_exec 以当前用户身份运行脚本?

当会话打开时,我需要以打开会话的用户身份运行脚本。

我在 /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_脚本,不要与pam 脚本

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)。

最好是在调用脚本之前使用包装器更改用户。

相关内容