有什么方法可以指定sudo
只为指定的命令保留某些环境变量吗?出于某些目的,我想要我的$HOME
env。运行某些命令时保留的变量。出于其他目的和其他命令,我希望它重置。这可以做到/etc/sudoers
吗?
编辑:
谢谢你的回答。我想知道我是否可以问一个后续问题,即“那么,为什么这不起作用?”
在我尝试开始工作的示例中,我想sudo nano
阅读我的$HOME/.nanorc
. 如果我使用这个:
Defaults:simon env_keep=HOME
Run Code Online (Sandbox Code Playgroud)
它完美地工作。如果我使用这个:
Defaults!/bin/nano env_keep=HOME
Run Code Online (Sandbox Code Playgroud)
或这个:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
Run Code Online (Sandbox Code Playgroud)
它根本不起作用。关于为什么的任何建议?(顺便说一句,我正在进行 Debian 测试。)
(注意:我不认为它是nano
特定的,顺便说一句——我可以用一个简单的echo
s的单行 bash 脚本重现这种行为$HOME
)。
Gil*_*il' 26
env_keep
仅覆盖/path/to/command
(当通过任何规则调用时,由任何用户调用)和用户joe
(无论他正在运行什么命令):
Defaults!/path/to/command env_keep=HOME
Defaults:joe env_keep=HOME
Run Code Online (Sandbox Code Playgroud)
您可以使用-=
或+=
来删除或添加一个条目到env_keep
列表中。
Cmnd_Alias PBUILDER = /usr/sbin/pbuilder,/usr/sbin/cowbuilder
Defaults!PBUILDER env_keep+=HOME
Run Code Online (Sandbox Code Playgroud)
这些行来自我自己,/etc/sudoers
以纠正pbuilder
查找$HOME
其用户配置文件但必须以 root 身份运行的问题(将其移动到/root
有点违背同时拥有系统和用户配置文件的目的)。