我希望在以某个用户身份运行某个命令时保留某些环境变量sudo
。man sudoers
似乎建议Defaults
可以做到这一点,如果我正确阅读了下面复制的段落(请参阅突出显示的部分),但其下面的语法规范似乎与此不匹配(除非它是该Runas
部分?)并且我没有找到任何示例。是否可以?我目前失败的尝试是:
/etc/sudoers.d/certain:4:23: syntax error
Defaults:certain-user!/certain-command.sh env_keep += "ENV_VAR1 ENV_VAR2"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我尝试过这种方法的变体(添加空格、更改命令等)但无济于事。
我提到的那一段:
默认值
某些配置选项可以在运行时通过一个或多个 Default_Entry 行更改其默认值。这些可能会影响任何主机上的所有用户、特定主机上的所有用户、特定用户、特定命令或作为特定用户运行的命令。请注意,每个命令条目可能不包含命令行参数。如果您需要指定参数,请定义 Cmnd_Alias 并引用它。
Default_Type ::= 'Defaults' |
'Defaults' '@' Host_List |
'Defaults' ':' User_List |
'Defaults' '!' Cmnd_List |
'Defaults' '>' Runas_List
任何帮助或见解将不胜感激。
答案1
我认为您将“作为特定用户运行的命令”解释为“作为特定用户运行的特定命令”,但我认为这意味着“对于作为特定用户运行的所有命令”。
无论如何,不可能为 run-as 和 command 添加限制Defaults
- 此处显示的语法不允许这样做。如果是的话:
Default_Type ::= 'Defaults' |
Defaults_Type '@' Host_List |
Defaults_Type ':' User_List |
Defaults_Type '!' Cmnd_List |
Defaults_Type '>' Runas_List
那么你想要的可能是可能的,但如上所述,语法只允许这些:
Defaults
Defaults@...
Defaults:...
Defaults!...
Defaults>...