我不相信我的问题是经典的 env_keep 问题,该问题有时会出现在跨 shell 保存环境变量的问题上。
我希望不仅在 中保留导出的函数和导出的环境变量sudo -s
,而且在有人运行 时也sudo command
保留。我无法编辑 /etc/sudoers,如下所示:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
但是我可以编辑/etc/sudoers.d
。我尝试过 Defaults !env_reset,但这没有用。我也尝试过 env_keep,但这也不起作用。我最后尝试了 Defaults env_keep += "myfunction"。
当我说这不起作用时,我的意思是如果我运行sudo -s
然后env
,我可以看到有保存,但是如果我运行,变量和函数不会被保存sudo somecommand
。目的是确保环境变量始终传递给二进制文件,无论是作为普通用户还是作为 root 调用。
简单来说,这是有效的:
test_var="hello world"
sudo -s
echo $test_var
但这并不奏效,我希望它
test_var="hello world"
sudo /bin/bash -c echo $test_var
如果有人能提供建议,我强烈建议这样做。我不确定这是否可行,因为尽管可以编辑 /etc/sudoers.d,但无法编辑 /etc/sudoers。
提前致谢