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

Ric*_*ard 5 pam ubuntu environment-variables

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

PATH DEFAULT=${PATH}:${HOME}/apps/flyway
Run Code Online (Sandbox Code Playgroud)

但我的新路径并没有以/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
Run Code Online (Sandbox Code Playgroud)

mur*_*uru 5

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

* Note that HOME may not be useful in pam_environment, closes: #109281
Run Code Online (Sandbox Code Playgroud)

Linux PAM 站点也说了很多:

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

显然,有人费心在 Fedora 上修补pam_env

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

HOME=/home/@{PAM_USER}
Run Code Online (Sandbox Code Playgroud)

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


Mih*_*otă 5

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