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)
这显然是一个老问题(如 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
.
从 PAM 版本 1.2.0 开始,您可以使用@{HOME}
代替${HOME}
并且它将始终如一地工作:https :
//github.com/linux-pam/linux-pam/commit/73bdfac8c091492f466342feb8f2f5daa2f4c39b