为什么 .pam_environment 在我的新路径中不包含 $HOME?

为什么 .pam_environment 在我的新路径中不包含 $HOME?

我创建了一个/home/myname/.pam_environment 文件含有

PATH DEFAULT=${PATH}:${HOME}/apps/flyway

但我的新道路并没有结束/home/myname/apps/flyway。为什么不?

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/apps/flyway

答案1

从 PAM 版本 1.2.0 开始,您可以使用@{HOME}代替${HOME},它将一致地工作: https://github.com/linux-pam/linux-pam/commit/73bdfac8c091492f466342feb8f2f5daa2f4c39b

答案2

这显然是一个老的问题(如15岁)。当时的“修复”是:

* Note that HOME may not be useful in pam_environment, closes: #109281

Linux PAM 站点也说了这么多:

请注意,您想要使用的许多环境变量可能在调用模块时尚未设置。例如,下面多次使用 HOME,但许多 PAM 应用程序并没有在您需要时使其可用。

显然,有人不厌其烦地pam_env为它打补丁在 Fedora 上。

无论如何,在基于 Debian 的系统上,一个粗略的方法是使用:

HOME=/home/@{PAM_USER}

在引用之前${HOME}/etc/security/pam_env.conf例如,这可以在 中完成。当然,这会破坏用户主目录不存在的地方/home/$USER

相关内容