无需编辑 /etc/sudoers,即可在命令和 shell 中保留 sudo

无需编辑 /etc/sudoers,即可在命令和 shell 中保留 sudo

我不相信我的问题是经典的 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。

提前致谢

相关内容