我创建了一个/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
。