.pam_environment 未在 TTY 中加载

.pam_environment 未在 TTY 中加载

我在 ~/.pam_environment 中设置了环境变量,它们在我打开的任何图形终端仿真器中都按预期存在。如果我打开虚拟终端(例如 TTY1)并登录,我的 PAM 环境变量就不存在了。

我如何确保 ~/.pam_environment 变量始终被加载?

答案1

/etc/pam.d/login一种方法是像这样编辑:

--- a/login 2015-06-15 03:35:17.422387358 +0200
+++ b/login 2015-06-15 03:36:41.535536201 +0200
@@ -50,7 +50,7 @@
 session       required   pam_env.so readenv=1
 # locale variables are also kept into /etc/default/locale in etch
 # reading this file *in addition to /etc/environment* does not hurt
-session       required   pam_env.so readenv=1 envfile=/etc/default/locale
+session       required   pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale

 # Standard Un*x authentication.
 @include common-auth

但我无法判断这是否是“正确的方法”。

答案2

根据官方文档~/.pam_environment是会话范围的环境变量,它只会影响特定用户。这意味着当您以自己或 root 身份编辑该文件时,您将编辑两个不同的文件。如果您以用户身份执行此操作:

user@here:~$ sudo nano ~/.pam_environment

它将打开 /home/user/.pam_environment。

但如果你以 root 身份打开它

user@here:~$ sudo su
root@here:~$ nano ~/.pam_environment

它将打开 /root/.pam_environment。因此您必须小心,不要以 root 身份编辑此文件。

要检查您的环境变量是否存在,请编辑 ~/.pam_environment 保存并注销或退出 ssh 会话。再次登录时运行出口打印出所有变量

user@here:~$ export

相关内容