我已改用~/.pam_environment
用于设置用户环境变量,并且效果很好。 PAM 负责设置一切,无论我使用什么 shell、如何使用它等等。我注意到问题的一个地方是使用 ; 打开交互式 shell 时sudo -i
。好像~/.pam_environment
没用过。例如,如果我想切换到 user foo
,我会运行sudo -iu foo
.执行此操作后,不会/home/foo/.pam_environment
设置中指定的任何环境变量。
我发现与这个主题有关的所有事实是,它sudo
不会将大多数(如果不是全部)环境变量转移到创建的进程中。但是,我不想保留旧的环境变量;我只是想向我要更改的用户致敬。
有没有办法做到这一点?是否有原因(安全?)这不是默认行为?
答案1
sudo 环境变量由 sudoers 文件控制。按照sudoers 的手册页。默认情况下,sudoers 文件env_reset
启用了该选项,因此设置了最小环境。您可以通过env_check
和env_keep
选项将变量列入白名单。另外,sudo 的 PATH 是由secure_path
选项控制的。